Ich habe einen Fehler, bei dem der Text meines UITextFields an seine endgültige Position springt (er animiert nicht), wenn die Breitenbeschränkung des Textfelds animiert wird. Werfen Sie einen Blick auf dieses gif:UITextField-Text springt beim Animieren der Breiteneinschränkung
Wenn das „Wachsen“ Taste abgegriffen wird, wächst das Textfeld der Breite. Aber "Hallo Welt" springt sofort in die Mitte, anstatt dort zu gleiten. Wenn der "Shrink" -Button angetippt wird, springt "Hallo Welt" sofort wieder nach links.
Meine Animation Funktion sieht wie folgt aus:
func animateGrowShrinkTextFields(grow: Bool) {
if grow {
UIView.animate(withDuration: 0.5, animations: {
self.widthConstraint.constant = 330
self.view.layoutIfNeeded()
}, completion: nil)
} else {
UIView.animate(withDuration: 0.5, animations: {
self.widthConstraint.constant = 100
self.view.layoutIfNeeded()
}, completion: nil)
}
}
ich folgende Liste Vorschläge versucht haben; keiner von ihnen hat funktioniert.
- rief ich
self.view.layoutIfNeeded()
undself.helloWorldTextField.layoutIfNeeded()
vor und innerhalb des Blocks Animation wie in dieser Antwort vorgeschlagen: https://stackoverflow.com/a/32996503/2179970 - Ich versuchte
self.view.layoutSubviews
undself.helloWorldTextField.layoutSubview
wie in dieser Antwort vorgeschlagen: https://stackoverflow.com/a/30845306/2179970 - Auch
setNeedsLayout()
versucht UITextField text jumps iOS 9 - I sogar versucht, die Schriftart zu ändern, wie hier vorgeschlagen: https://stackoverflow.com/a/35681037/2179970
- Ich versuchte
resignFirstResponder
(obwohl, obwohl ich nie tippen oder das Textfeld in meinen Tests bearbeiten, so sollte es nicht die firstResponder beinhalten), wie hier vorgeschlagen: https://stackoverflow.com/a/33334567/2179970 - I UITextField versucht Subklassen wie hier zu sehen: https://stackoverflow.com/a/40279630/2179970
- Ich habe auch versucht eine UILabel mit und bekam das gleiche jumpy Ergebnis.
die folgende Frage zu Mine auch sehr ähnlich ist, aber noch keine Antwort hat: UITextfield text position not animating while width constraint is animated
Hier mein Projekt auf Github ist: https://github.com/starkindustries/ConstraintAnimationTest
Haben Sie versucht, 'self.view.layoutIfNeeded()' zu kommentieren? Normalerweise brauchst du das nicht ... –
@JimmyJames ja ich habe. Ohne 'self.view.layoutIfNeeded()' wird das gesamte textField nicht animiert und stattdessen sofort vergrößert/verkleinert. –
Humm, ok. Dann mein schlechtes ^^. Yourwidth-Einschränkung ist die Breite des 'UITextField' rechts? Und dieses 'UITextField' hat ein 'text center'-Property? –