约束规则如下:
使用规则
|: 表示父视图
-:表示距离
V: :表示垂直
H: :表示水平
>= :表示视图间距、宽度和高度必须大于或等于某个值
<= :表示视图间距、宽度和高度必须小宇或等于某个值
== :表示视图间距、宽度或者高度必须等于某个值
@ :>=、<=、== 限制 最大为 1000 优先级 1000最大
1.|-[view]-|: 视图处在父视图的左右边缘内
2.|-[view] : 视图处在父视图的左边缘
3.|[view] : 视图和父视图左边对齐
4.-[view]- : 设置视图的宽度高度
5.|-30.0-[view]-30.0-|: 表示离父视图 左右间距 30
6.[view(200.0)] : 表示视图宽度为 200.0
7.|-[view(view1)]-[view1]-| :表示视图宽度一样,并且在父视图左右边缘内
8. V:|-[view(50.0)] : 视图高度为 50
9: V:|-(==padding)-[imageView]->=0-[button]-(==padding)-| : 表示离父视图的距离
为Padding,这两个视图间距必须大于或等于0并且距离底部父视图为 padding。
10: [wideView(>[email protected])] :视图的宽度为至少为60 不能超过 700 ,最大为1000
11: 如果没有声明方向默认为 水平 V:
- (NSArray *)constraints NS_AVAILABLE_IOS(6_0);
对于有层次关系的两个view之间的约束关系,添加到层次较高的父级view上。
对于两个不同层级view之间的约束关系,添加到他们最近的共同父级view上。
对于两个同层级view之间的约束关系,添加到他们的父级view上。
六、- (void)addConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); //视图布局上添加一个约束
七、- (void)addConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); //视图布局上添加多个约束
八、- (void)removeConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); 移除视图布局上的一个约束
九、- (void)removeConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); 移除视图布局上的多个约束
十、- (void)updateConstraintsIfNeeded NS_AVAILABLE_IOS(6_0); //调用新的视图布局自动触发,更新视图布局上的约束
十一、- (void)updateConstraints NS_AVAILABLE_IOS(6_0); // 更新自定义视图布局约束
十二、- (BOOL)needsUpdateConstraints NS_AVAILABLE_IOS(6_0); 判断视图布局是否需要更新约束
13、- (void)setNeedsUpdateConstraints NS_AVAILABLE_IOS(6_0); 设置视图布局是否需要更新约束
UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
UIButton *acceptButton = [UIButton buttonWithType:UIButtonTypeCustom];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(cancelButton,acceptButton);
NSArray *demoConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"[cancelButton(72)]-12-[acceptButton(50)]" options:0 metrics:nil views:viewsDictionary]; //取消按钮宽72point,accept按钮宽50point,它们之间间距12point
NSLog(@"%@", demoConstraint);
[oneViewDemo updateConstraintsIfNeeded];
[oneViewDemo updateConstraints];
[oneViewDemo needsUpdateConstraints];
[oneViewDemo setNeedsUpdateConstraints];
[oneViewDemo addConstraints: demoConstraint];
[oneViewDemo addConstraint: [demoConstraint objectAtIndex:0]];
[oneViewDemo removeConstraint:[demoConstraint objectAtIndex:1]];
[oneViewDemo removeConstraints:demoConstraint];