1. ホーム
  2. xcode

[解決済み】Swiftで制約をアニメーション化しようとしています。

2022-04-01 06:12:08

質問

私は UITextField をタップすると幅が拡大するようにしたい。制約を設定し、左側の制約が、右側でアニメーションさせようとしている制約よりも低い優先順位を持っていることを確認しました。

以下は、私が使おうとしているコードです。

// move the input box
UIView.animateWithDuration(10.5, animations: {
    self.nameInputConstraint.constant = 8
    }, completion: {
        (value: Bool) in
        println(">>> move const")
})

これは動作しますが、ただ瞬時に起こるようで、動きはないようです。念のため10秒に設定してみましたが、同じ結果になりました。

nameInputConstraint は、私がIBから私のクラスに接続するためにドラッグした制御制約の名前です。

どのように解決するのですか?

まず制約を変更し、その更新をアニメーション化する必要があります。

これは、スーパービューにあるはずです。

self.nameInputConstraint.constant = 8

スウィフト2

UIView.animateWithDuration(0.5) {
    self.view.layoutIfNeeded()
}

Swift 3, 4, 5

UIView.animate(withDuration: 0.5) {
    self.view.layoutIfNeeded()
}