web-dev-qa-db-ja.com

iOS:UIViewの高さの制約をプログラムで変更する

特定のUIViewの高さ制約をプログラムで取得し、コード内でその値を変更する方法はあるのだろうか? IBに固定された4つのエッジと高さの制約が追加されたUIViewsがいくつかある状況があります(そうしないとIBが不満を言います)が、プログラムの途中で高さを変更する必要がありますUIViewsを使用し、一部のUIViewsをビュー内で押し下げます。

ctrl + dragUIViewsの高さの制約を変更し、コード内でそれらの値を変更できることは知っていますが、そのためには何十個も配線する必要があります。したがって、これは効率的ではなく、何らかの方法でスケーラブルではないと思います。

だから私はコードを介して特定のビューの高さの制約を完全に取得し、それを動的に変更する方法があるのだろうか?

ありがとう!

33
Marcus

その特定の制約を、次のようなインターフェイスビルダーからコードに接続できます。

enter image description here

また、NSLayoutConstraintには、固定ピン値である定数プロパティが設定されています。

プログラムで制約を追加する場合は、NSLayoutConstraintクラスのidentifierプロパティから確実に恩恵を受けることができます。それらを設定し、繰り返し処理して、特定の特定された制約を取得します。

ドキュメントが言うように

extension NSLayoutConstraint {
    /* For ease in debugging, name a constraint by setting its identifier, which will be printed in the constraint's description.
     Identifiers starting with UI and NS are reserved by the system.
     */
    @availability(iOS, introduced=7.0)
    var identifier: String?
}
41
Ashraf Tawfeeq

最初に.hファイルに高さの制約を追加します。

//Add Outlet     
IBOutlet NSLayoutConstraint *ViewHeightConstraint;

次に、以下のコードを.mファイルに追加します。

//Set Value From Here   
ViewHeightConstraint.constant = 100;
42
Bhavin Chauhan