代碼中的尺寸不要使用480耸三、460這樣的絕對數(shù)值乱陡,使用的UIScreen取設(shè)備的尺寸。
vfl使用規(guī)則
| :表示父視圖
- :表示距離
V: :表示垂直
H: :表示水平
>= :表示視圖間距仪壮、寬度和高度必須大于或等于某個值
<= :表示視圖間距憨颠、寬度和高度必須小宇或等于某個值
== :表示視圖間距、寬度或者高度必須等于某個值
@ :>=积锅、<=爽彤、==限制 最大為1000
1.|-[view]-|:視圖處在父視圖的左右邊緣內(nèi)
2.|-[view] :視圖處在父視圖的左邊緣
3.|[view] :視圖和父視圖左邊對齊
4.-[view]- :設(shè)置視圖的寬度高度
5.|-30.0-[view]-30.0-|:表示離父視圖 左右間距30
6.[view(200.0)] :表示視圖寬度為200.0
7.|-[view(view1)]-[view1]-|:表示視圖寬度一樣,并且在父視圖左右邊緣內(nèi)
8.|-[view(view1)]-|:方括號表示view缚陷,圓括號表示尺寸數(shù)值适篙。支持大小等于◇镆或者另一個view(不支持倍數(shù))
9. V:[view(50.0)] :視圖高度為50
10:V:|-(==padding)-[imageView]->=0-[button]-(==padding)-|
:表示離父視圖的距離
為Padding,這兩個視圖間距必須大于或等于0并且距離底部父視圖為padding嚷节。
11: [wideView(>=60@700)] :視圖的寬度為至少為60不能超過700聂儒,最大為1000
12:如果沒有聲明方向默認(rèn)為水平H:
必要時使用單個約束。
+(id)constraintWithItem:(id)view1?attribute:(NSLayoutAttribute)attr1?relatedBy:(NSLayoutRelation)relation?toItem:(id)view2?attribute:(NSLayoutAttribute)attr2?multiplier:(CGFloat)multiplier?constant:(CGFloat)c;
注意事項:
1.addConstraint(s)前硫痰,view應(yīng)該去部被addSubView上去了衩婚。
2.不必給views寫frame
3.給必要的view關(guān)掉AutoresizeingMask。[_aViewsetTranslatesAutoresizingMaskIntoConstraints:NO];
4.UILabel換行要寫linebreakMode,要寫numberOfLines(iOS7.0默認(rèn)好像是1)
5.UILabel要想換行碍论,一定要添加preferredMaxLayoutWidth谅猾。否則沒法初始化寬度柄慰。
代碼:命名必須有意義如vfl_phoneLabel_H表示水平約束
NSDictionary *views =NSDictionaryOfVariableBindings(_phoneNumLabel,_phoneNumField);
NSDictionary *metrics =@{@"hPadding":@25,@"vPadding":@10,@"imageEdge":@150.0};
NSString *vfl_phoneLabel_H =@"H:|-hPadding-[_phoneNumLabel]-vPadding-[_phoneNumField(_phoneNumLabel)]-hPadding-|";
NSString *vfl_phoneLabel_V = @"V:|-50-[_phoneNumLabel(30)]";
NSString *vfl_phoneField_V =@"V:|-50-[_phoneNumField(_phoneNumLabel)]";
[self.viewaddConstraints:[NSLayoutConstraint constraintsWithVisualFormat:vfl_phoneLabel_Hoptions:0 metrics:metrics views:views]];
[self.view addConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:vfl_phoneLabel_V options:0 metrics:metricsviews:views]];
[self.view addConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:vfl_phoneField_V options:0 metrics:metricsviews:views]];