AutoLayout02 实现如下效果:
只要明确4点即可。(x、y、w、h)
先把蓝色的确定了。
宽:距离左边右边相当于动态的宽度。
高度是固定的。
左边的距离可以同时确定x坐标。
y坐标由在父控键中垂直分布决定。
红色:
红色和蓝色左边对齐,这里实现x坐标。
高度固定。到右边的距离固定动态宽确定。设置和下面的一个蓝色的距离,y确定。
前面4个分别用于两个之间的对齐。最下面2个用于一个的水平或者垂直居中。
中间的三个,可以实现类似下面的功能。
最上面的是距离某个视图前后左右的距离。中间的宽高是高度和宽度锁定。
中间三个功能表示两个对象的宽和高相等。
下面的对齐方式,也是上下对齐,不同的是,这里可以设置对齐的左边、右边、还是顶部或者底部对齐。
约束规则:如果有两个同等级的view,那么他们共同的约束规则添加在他们的父view上。如果是父类和子类之间的约束,那么添加在这两个的父类上。如果这两个不是在一个父类下,有没有上下级关系,那么添加在距离他们最近的一个类上。
这里还有一个要注意的地方:比如我想实现一个view距离中间的中心线83的距离:
可以让其居中,然后设置距离83.
代码编写约束语言:
首先禁用Autoresizing
view.translatesAutoresizingMaskIntoConstraints= NO;
常用的约束方法:
- (void)addConstraint:(NSLayoutConstraint*)constraint;
- (void)addConstraints:(NSArray*)constraints;
+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1relatedBy:(NSLayoutRelation)relation toItem:(id)view2attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplierconstant:(CGFloat)c;
VFL语言:为了开发方便,水果公司还专门为这个约束规则设计了一套约束语言,visual format language。具体语法可以查阅相关手册。