Ich versuche, meine UITableViewController
via UISearchDisplayController
zu suchen, aber ich sehe einen sehr merkwürdigen Animationsfehler, wenn die Suche beginnt und endet.
Auf dem iPhone funktioniert die Animation in der Navigationsleiste einwandfrei. Beim Beenden der Suche bleibt die Navigationsleiste beim Animieren jedoch hinter der Suchleiste zurück. Dadurch wird ein weißer Streifen zwischen der Navigationsleiste und der Suchleiste angezeigt. Auf dem iPad sind die Animationen komplett durcheinander.
und
Wie die obigen Videos zeigen, leiden die Aktien-Apps nicht unter diesen Animationsfehlern. Hat jemand irgendwelche Ideen, was die Probleme verursacht?
Ich erstelle das UISearchDisplayController
mit dem folgenden innerhalb des "Master" View-Controllers.
Ich habe das auch mit Storyboards versucht, aber die gleichen Animationsfehler treten auf.
Der weiße Fehler, den Sie sehen, ist die Hintergrundfarbe einer Tabellenansicht, die durch eine Lücke zwischen der Navigationsleiste und der Suchleiste sichtbar ist. Die Lücke ist definitiv Apple-Aufsicht.
Also sieht die Lösung so aus:
%Vor%Hier füge ich eine benutzerdefinierte Ansicht direkt unter der Suchleiste hinzu. Es passiert kurz vor dem Übergang zum normalen VC. Die Ansicht wird an dem speziellen Punkt positioniert, sodass sie die Lücke zwischen der Navigationsleiste und der Suchleiste überdeckt. Nachdem der Übergang beendet ist, entferne ich die benutzerdefinierte Ansicht.
Die obige Lösung ist nur dann gut, wenn eine nicht transparente navbar vorhanden ist. Für transluzente Navigationsleisten ist es eine Herausforderung, die richtige Farbe für unsere "Lückenschluss" -Ansicht zu finden. Aber sobald wir ziemlich frei sind, die Farbe der Suchleiste zu ändern, können wir die Farbe der Suchleiste für Gap-Stopper verwenden.
Nehmen wir Änderungen an unserem Code vor
Zuerst brauchen wir nicht durchscheinende Suchleiste, also setzen Sie Hintergrundbild auf Suchleiste:
%Vor%Hier ist die UIImage-Kategorie-Methode, die oben verwendet wurde:
%Vor% Dann ändern Sie unsere searchDisplayControllerWillEndSearch
Methode:
und schließlich bleibt die Methode searchDisplayControllerDidEndSearch
unverändert:
Ehrlich gesagt ist diese Lösung universeller und sieht viel hübscher aus als eine, die ich im ersten Teil der Antwort beschrieben habe.
Tags und Links objective-c iphone ios7 uisearchdisplaycontroller