VFLまとめ

3490 ワード

インターフェイスのレイアウトがあってサードパーティのフレームがあるけど、なんか下の方の物は置いて整理するべきではない


VFL


フルネームはVisual Format Language、翻訳は「ビジュアルフォーマット言語」
VFLはアップル社がAutolayoutの符号化を簡略化するために発表した抽象言語の事例である:H:[cancelButton(72)]-12-[acceptButton(50)]canelButton幅72,acceptButton幅50,それらの間の間隔12
H:[wideView(>=60@700)」wideView幅が60 point以上で、この制約条件の優先度は700(優先度の最大値は1000で、優先度の高い制約ほど先に満たされる)
V:[redBox]-[yellowBox(==redBox)]垂直方向には、まずredBoxがあり、その下方にはredBoxの高さに等しいyellowBoxがある
H:|-10-[Find]-[FindNext]-[FindField(>=20)]-|水平方向では、Findは親viewの左端からデフォルト間隔幅、その後はFindNext距離Find間隔デフォルト幅である.その後は幅が20以上のFindFieldで、FindNextおよび親viewの右端との間隔はデフォルトの幅です.(縦線"|"はsuperviewのエッジを表す)
1)|"はsuperviewを表す.
|- -[view1 ]-(>=20)-[view2 ]

 H/V , >/

2)vfl 3の中を見て、角括弧はviewを表して、丸括弧は寸法の数値を表します.サポートサイズが等しい.あるいは、v 1の幅がv 2に等しい別のview|−[view 1(view 2)]である.
3)優先度は@で示す.V:|-50@750-[view(55)]かmetricsに書いたほうがいいです.
 UILayoutPriority。 。1000 。

4)options,これは具体的なニーズによって決まる.縦Vレイアウトの場合は、NSLayoutFormatAlignAllLeftを追加して位置合わせすることができます.
 NSLayoutFormatAlignAllLeft | NSLayoutFormatAlignAllRight。( , )

5)書き終わったら一般的にconstraintをsuperviewに追加します.
NSString *vfl1 = @"|-hPadding-[_headerL]-hPadding-|";   
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:vfl1 options:0 metrics:metrics views:dict1]]; 

6)単一constantを生成するためのapiもある
+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;  

パラメータについて、覚えておいて、view 1.attr1 = view2.attr 2*multiplier+constantでいいです.これはVFLを使わないので分かりやすいですが、不便です.これで書けば.従来のレイアウトよりも仕事が少ないわけではありません.
パラメータまとめおよびVFLの使用
VFLを使用してコンストレイント配列を作成するには
+ (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views;
formatVFL 

opts:コンストレイントタイプ(一般的には0)
metrics:VFL文で使用される具体的な数値
views:VFL文で使用されるコントロール
VFL文で使用されるコントロールを含む辞書のショートカットマクロ定義を作成します.
NSDictionaryOfVariableBindings(…)

最近githubに物を置き始めたばかりで会社では書けないし==一応見てみましょう


githubアドレス:https://github.com/FuThD