UIViewの一定の高さの制約をプログラムで更新するには?

私はUIViewを持っており、Xcode Interface Builderを使って制約を設定しています。

今度はその UIView's の高さの定数をプログラムで更新する必要があります。

myUIView.updateConstraints()`のような関数がありますが、どのように使えばいいのかわかりません。

ソリューション

Interface builderからheight constraintを選択し、そのアウトレットを取得します。そのため、ビューの高さを変更したい場合は、以下のコードを使用することができます。

yourHeightConstraintOutlet.constant = someValue
yourView.layoutIfNeeded()

メソッド updateConstraints() は、UIView のインスタンスメソッドです。プログラムで制約条件を設定するときに役立ちます。ビューの制約条件を更新します。詳しくはこちらをご覧ください。

解説 (12)

制約をIBOutletとしてVCにドラッグします。そうすれば、関連する値(およびその他のプロパティ)を変更することができます(ドキュメントを参照)。

@IBOutlet myConstraint : NSLayoutConstraint!
@IBOutlet myView : UIView!

func updateConstraints() {
    // You should handle UI updates on the main queue, whenever possible
    DispatchQueue.main.async {
        self.myConstraint.constant = 10
        self.myView.layoutIfNeeded()
    }
}
解説 (0)

レイアウト制約を更新するには、constantプロパティを更新し、その後にlayoutIfNeededを呼び出すだけです。

myConstraint.constant = newValue
myView.layoutIfNeeded()
解説 (0)