UIView Animation animiert die Position, aber nicht die Breite

7

Ich versuche, eine UISearchBar wie in Mobile Safari zu transformieren: berühre das Suchfeld und es vergrößert sich, während das Standortfeld schrumpft.

Meine aktuelle Animation zum Ändern der Breite und Position des Suchfelds animiert nur die Position: kurz bevor sie an die richtige Stelle gleitet, wird sie einfach auf die richtige Breite verschoben. Hier ist mein Code:

%Vor%

Ich habe diesen Code etwas modifiziert, um ihn hier zu präsentieren, aber ich hoffe, das gibt den Grund.

Irgendwelche Vermutungen darüber, warum dies geschieht, würden geschätzt werden!

Prost, Aaron.

    
Aaron Vegh 23.03.2010, 03:25
quelle

4 Antworten

12

Ich habe es dank diesem Beitrag herausgefunden: Ändern der Größe des UISearchBar TextField?

Stellt fest, dass der Inhalt einer UISearchBar nicht korrekt zusammen mit der äußeren Ebene geändert wird. Sie müssen also -layoutSubviews: innerhalb des Animationsblocks aufrufen, nachdem der Frame auf der Suchleiste gesetzt wurde. Also endet der Block wie folgt:

%Vor%

Requisiten für Nick Farina!

    
Aaron Vegh 23.03.2010, 23:18
quelle
7

Ich hatte das gleiche Problem, als ich versuchte, die Breite von UISearchBar zu animieren.

Auf iOS 4 und höher habe ich festgestellt, dass UIViewAnimationOptionLayoutSubviews als Option für

verwendet wird %Vor%

hat es behoben.

    
otto 18.04.2012 20:45
quelle
3

Die angenommene Antwort funktioniert, aber laut Apple-Dokumentation sollten Sie "diese Methode nicht aufrufen" . Die saubere Lösung ist layoutIfNeeded method:

zu verwenden %Vor%

Viel Spaß!

    
Rudolf Adamkovič 03.07.2012 13:19
quelle
1

Tut mir leid, das ist ein bisschen alt, aber ich stieß auf ein ähnliches Problem. Ich wollte layoutSubviews nicht verwenden, da die Dokumentation besagt, dass Sie diese Methode nicht direkt aufrufen sollten.

Was ich getan habe, um mein Problem zu lösen, war sizeToFit in der Unteransicht innerhalb des Animationsblocks.

    
xgalaxy 21.02.2012 00:46
quelle