テキストフィールドの幅の制約をアニメートするときに、私のUITextFieldのテキストが最終位置にジャンプする(アニメーション化しない)グリッジが発生しています。このGIFを見てみましょう:「成長」ボタンをタップすると幅の制約をアニメートすると、UITextFieldのテキストがジャンプする
を、テキストフィールドの幅が大きくなります。しかし、「こんにちは世界」は、そこを滑るのではなく、すぐに中央に飛びます。 「縮小」ボタンをタップすると、「hello world」が直ちに左に戻ります。
私のアニメーション機能は、次のようになります。
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)
}
}
私は次のリストの提案を試してみました。それらのどれも働かなかった。
- この回答で提案されているように私は、アニメーションブロックの前と内
self.view.layoutIfNeeded()
とself.helloWorldTextField.layoutIfNeeded()
と呼ばれる:https://stackoverflow.com/a/32996503/2179970 - この回答で提案されているように私は
self.view.layoutSubviews
とself.helloWorldTextField.layoutSubview
を試してみました:https://stackoverflow.com/a/30845306/2179970 - はまた、私は
setNeedsLayout()
UITextField text jumps iOS 9 - を試してみましたここでも示唆しているようにフォントを変更しようとしました:https://stackoverflow.com/a/35681037/2179970
- 私は試しました
resignFirstResponder
ここで示唆したように(それはfirstResponderを伴うべきではありませんので、私は、私のテストでテキストフィールドをタップしたり、編集しないけれどもけれども):ここに見られるように、私はUITextFieldのサブクラス化しようとしたhttps://stackoverflow.com/a/33334567/2179970 - :https://stackoverflow.com/a/40279630/2179970
- 私もUILabelを使用してみましたし、同じ跳ね上がりの結果を得ました。
次の質問にも鉱山と非常によく似ていますが、まだ答えを持っていません。ここでUITextfield text position not animating while width constraint is animated
はGithubの上の私のプロジェクトである:私は「https://github.com/starkindustries/ConstraintAnimationTest
'self.view.layoutIfNeeded()'にコメントしましたか?通常、あなたはこれを必要としません... –
@JimmyJamesはい私は持っています。 'self.view.layoutIfNeeded()'がなければ、textField全体がアニメーション化されず、すぐに拡大/縮小されます。 –
Humm、ok。それから私の悪い^^。 Yourwidth制約は 'UITextField'の幅です。そして、この 'UITextField'は' text center 'propetryを持っていますか? –