Interface Builder でビジュアル レイアウトを行った後、実行時にアクセスしたい制約をいくつか作成しました。後で検索できるように、Interface Builder で制約にラベルを付けたり識別したりする方法はありますか?
私がこれをやりたい理由は、視覚的に指定された制約に基づいて計算を実行する必要があるからです。Appleがビジュアルフォーマット言語コントローラーでプログラム的に制約を指定することもできます。IB の設計時のフィードバックを失わないように、このアプローチは使用しません。
編集
参照アウトレットの作成は機能しましたが、疑問は依然として残ります。
ベストアンサー1
アップデート:
バルトロミエ・セマンチクが説明したように彼の答え、現在では識別子フィールドは属性インスペクタNSLayoutConstraint
このフィールドを自分で公開する必要がないようにするためです。ドキュメントの概要ビューまたはストーリーボードビューで識別子を追加し、属性インスペクタ右側に。
以前の回答:
はい、可能です。とNSLayoutConstraint
呼ばれるプロパティがあり、identifier
インターフェースビルダー割り当てられました。これをデモするために、シングルビューアプリケーション赤いボックスである単一のサブビューがあります。このサブビューには、幅、高さ、コンテナー内で水平方向に中央揃え、コンテナー内で垂直方向に中央揃えの 4 つの制約があります。redBoxWidth
次のようにして、幅制約に識別子を付けました。
幅の制約をクリックしますドキュメントレイアウトビューそして、アイデンティティ検査官下ユーザー定義のランタイム属性
+
下のキーパス。 変化キーパスに識別子、 変更タイプ ブールに弦を設定し、価値にredBoxWidth
。次に、
ViewDidLoad
名前で制約を見つけて、その値を変更することができます。class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() for subview in view.subviews as [UIView] { for constraint in subview.constraints() as [NSLayoutConstraint] { if constraint.identifier == "redBoxWidth" { constraint.constant = 300 } } } } }