iOS 7 UISearchDisplayController Animation Glitches

8

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.

iPhone-Video

und

iPad-Video

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.

%Vor%

Ich habe das auch mit Storyboards versucht, aber die gleichen Animationsfehler treten auf.

    
Rick 26.04.2014, 02:10
quelle

2 Antworten

1

Lösung für nicht transparente navbar (weniger Code, weniger Universalität)

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.

UPDATE: Universelle Lösung (mehr Code, mehr Universalität)

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:

%Vor%

und schließlich bleibt die Methode searchDisplayControllerDidEndSearch unverändert:

%Vor%

Ehrlich gesagt ist diese Lösung universeller und sieht viel hübscher aus als eine, die ich im ersten Teil der Antwort beschrieben habe.

    
kas-kad 01.08.2014 11:54
quelle
1

Ich finde die beste Lösung für mich, es sieht genau so aus, wie ich es brauche, ich benutze schnell, aber wenn Sie brauchen, können Sie es leicht in objective-c

übersetzen %Vor%

Fügen Sie diesen Code in viewDidLoad() ein und das war's. Hoffe das hilft:)

    
vsilux 20.02.2015 00:14
quelle