iOS中国語APIのNSLayoutconstraint

4468 ワード

AutoLayoutは、従来のUI要素の位置指定とは異なるレイアウト方法を開発者に提供します.以前は、IBでドラッグ&ドロップしても、コードに書いても、各UIViewには現在のビューでの位置とサイズを定義する独自のframeプロパティがありました.AutoLayoutを使用すると、コンストレイントを使用してviewの位置と寸法を定義するようになります.このような最大の利点は、異なる解像度とスクリーンサイズでのviewの適合問題を一挙に解決することであり、また回転時のviewの位置の定義を簡略化し、従来は底部の上に10画素が中央に位置するview、画面を回転させたり、デバイス(iPadやiPhone 5、以降で発生する可能性のあるmini iPad)を交換したりしても、常に底部の上に10画素が中央に位置していて、変化はありません.
 
コンストレイントは、2つのユーザー・言い訳の関係を定義し、コンストレイントを作成することで、レイアウト・システム内のコントロールの位置とサイズを満たすことができます.各コンストレイントは、次の形式の線形方程式です.
   item1.attribute1 = multiplier × item2.attribute2 + constant
 
この方程式では,attribute 1とattribute 2は自動レイアウトが調整可能な場合にこれらの制約要因を解決する変数である.コンストレイントを作成して他の値を定義します.たとえば、2つのボタンの相対位置を定義すると、2番目のボタンの開始位置は、1番目のボタンの終了位置より8ピクセル離れています.この関係は線形方程式として以下に示す.  button2.leading = 1.0 × button1.trailing + 8.0
 
また.制約は平等関係に限らない.また、これらのアトリビュート間の関係は、より大きいか等しいか(>=)またはより小さいか(<=)を使用して記述することもできます.コンストレイントには1~1000の優先度もあります.優先度1000の制約が必要です.1000未満のすべての優先度はオプションです.既定では、すべてのコンストレイントが必要です(優先度=1000).必要な制約を解決すると、AutoLayoutは最高から最低の優先順位ですべてのオプション制約を処理します.オプション制約を解決できない場合は、可能な限り必要な結果に近づき、次の制約に移動しようとします.このような不平等、平等、優先度の結合はあなたに強い柔軟性を与えます.複数のコンストレイントを組み合わせることで、画面内のユーザーインタフェース要素のサイズと位置を動的に適応するように定義できます.
 
コンストレイントの作成
  + (NSArray<__kindof NSLayoutConstraint *> *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(nullable NSDictionary *)metrics views:(NSDictionary *)views
VFL記述による制約の作成
パラメータ:format
拘束のフォーマット仕様opts
オプションは、複数のオブジェクトのプロパティとレイアウトの方向を記述します.metrics
ビジュアルフォーマット文字列に表示される制約dictionaryでは、dictionaryのkeyはNSString値でなければなりません.dictionaryのvalueはNSNumberタイプでなければなりません.views
ビューdictionary、dictionaryのkeyはNSString値でなければなりません.dictionaryのvalueはUIViewオブジェクトでなければなりません.
戻り値:
コンストレイントの配列
  
  +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c
指定したビューの指定したプロパティ間の関係を定義してコンストレイントを作成するには
パラメータ:view1
左側のビューをコンストレイントattr1
左側のビューのアトリビュートをコンストレイントするにはrelation
左側と右側のビューの関係を拘束view2
右側のビューをコンストレイントattr2
右側のビューのアトリビュートをコンストレイントするにはmultiplier
乗数c
定数値
 
コンストレイントのアクティブ化または非アクティブ化
  property (getter=isActive) BOOL active
コンストレイントのステータスを取得します.デフォルトはNOです.
  
  + (void)activateConstraints:(NSArray *)constraints
指定したコンストレイント配列内のすべてのコンストレイントをアクティブにします.
 
  + (void)deactivateConstraints:(NSArray *)constraints
指定したコンストレイント配列内のすべてのコンストレイントを非アクティブにします.
 
アクセス制約データ
  
  @property UILayoutPriority priority
優先度のプロパティ.制約の優先度がUILayoutPriorityRequiredより小さい場合、この制約はオプションです.優先度の高いコンストレイントを満たしてから、優先度の低いコンストレイントを満たすことができます.優先度は0より大きく、NSLayoutPriorityRequired以下である必要があります.
  @property(readonly, assign) id firstItem
コンストレイントに参加する最初のオブジェクト.
  @property (readonly) NSLayoutAttribute firstAttribute
最初のオブジェクトのプロパティ.
  @property (readonly) NSLayoutRelation relation
コンストレイント内の2つのアトリビュートの関係.
  @property (nullable, readonly, assign) id secondItem
パラメータコンストレイントの2番目のオブジェクト.
  @property (readonly) NSLayoutAttribute secondAttribute;
2番目のオブジェクトのプロパティ
 
列挙する
  NSLayoutAttribute
コンストレイントの値の一部を取得するには、オブジェクトのビジュアル表示形式を使用します.
 
次は使い方をご紹介します