- 对于两个同层级View之间的约束关系,添加到他们的父View上。
- 对于两个不同层级View之间的约束关系,添加到他们最近的共同的父View上
- 对于有层次关系的两个View之间的约束关系,添加到层次较高的父View上
编码创建约束的几种方法:
1.创建简单的约束,一般作用于单一的对象,或者对象之间的间距
+ (NSArray *)constraintsWithVisualFormat:(NSString *)format
options:(NSLayoutFormatOptions)opts
metrics:(NSDictionary *)metrics
views:(NSDictionary *)views;
2.创建类似于view1.attr1 = view2.attr2 * multiplier + constant这样的约束
+(id)constraintWithItem:(id)view1
attribute:(NSLayoutAttribute)attr1
relatedBy:(NSLayoutRelation)relation
toItem:(id)view2
attribute:(NSLayoutAttribute)attr2
multiplier:(CGFloat)multiplier
constant:(CGFloat)c;
官方文档的例子:
Standard Space

Width Constraint

Connection to Superview

Vertical Layout

Flush Views

Priority

Equal Widths

Multiple Predicates

A Complete Line of Layout

[button]-[textField] //标准间隔,两个view之间只用"-",没有数字的时候就是标准间隔

[button(>=50)] //宽度约束,约束view的宽度的最小值为50

|-50-[purpleBox]-50-| //与父视图间隔,到父视图的左右都为50的间距

V:[topField]-10-[bottomField] //两个view的垂直间隔,间距为10

[maroonView][blueView] //两个view之间无间隔

[button(100@20)] //优先级,表示设置宽度为100,优先级为20

[button1(==button2)] //等宽

[flexibleButton(>=70,<=100)] //宽度范围限制,
大于等于70, 小于等于100

|-[find]-[findNext]-[findField(>=20)]-| //多视图排列
