学习网站:传送门 讲的蛮详细,作者有点烧包.
1,首先生成一个装载所有需要自动布局的父及子视图的一个字典,
代码:NSDictionary *views =NSDictionaryOfVariableBindings(self.view,_view3,_view2,_view1);
这样就创建好了,现在字典里面就是这样的:{"self.view":self.view,@"_view3":_view3,…}
2,定制约束条件,约束条件就是自动布局里面最关键的了。
代码:[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-10-[_view1(==_view2)]-10-[_view2]-10-|"options:0metrics:0views:views]];
这段代码有点长,我们分开来看,主要的就是里面的定制字符串部分(两个宽度相同的view,其间距是10个点,距离左右边框的距离也是10个点)了,现在我们来一一介绍,
2.1,|表示屏幕边框;
2.2,-10-表示10个像素的距离;
2.3,[控件名称]表示为那个控件加上约束;
2.4,[控件名称(限定条件)]表示为控件加上一定的限定条件【里面可以是(>=、<=、==)某(对象空间、固定的数值)】,上面的意思就是说view1和view2相同。
2.5,V:|-…..其中的 V: 代表着垂直方向上的自动布局,那么V:|就是距离上边框多远咯。例子:V:|-30-[_view1(<=200)]-10-[_view3]-10-| (view1的高度不能大于200点,距离上边框30个点,与view3的间距是10个点,view3与底边框的距离是10个点)
加上下面这货过后呢,就不需要给你的视图初始化大小咯。程序会自己去给你赋值的。
nextView.translatesAutoresizingMaskIntoConstraints=NO;//从约束群中得到自动转换调整大小的模具
除了这种方法,还有另外一种方法接下来就学习它吧。
直接上代码:
//添加约束,使按钮在屏幕水平方向的中央
NSLayoutConstraint *centerXContraint=[NSLayoutConstraint
constraintWithItem:_button
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:superView
attribute:NSLayoutAttributeCenterX
multiplier:1.0f
constant:0.0];
//添加约束,使按钮在屏幕垂直方向的中央
NSLayoutConstraint *centerYContraint=[NSLayoutConstraint
constraintWithItem:_button
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:superView
attribute:NSLayoutAttributeCenterY
multiplier:1.0f
constant:0.0];
//给button的父节点添加约束
[superView addConstraints:@[centerXContraint,centerYContraint]];
初始化约束的函数名有点长,我们来一一解读它每个参数的含义
constraintWithItem:需要被约束的对象
attribute:约束的属性,所有如下:
NSLayoutAttributeLeft,
NSLayoutAttributeRight, NSLayoutAttributeTop,
NSLayoutAttributeBottom, NSLayoutAttributeLeading,
NSLayoutAttributeTrailing, NSLayoutAttributeWidth,
NSLayoutAttributeHeight, NSLayoutAttributeCenterX,
NSLayoutAttributeCenterY, NSLayoutAttributeBaseline,
NSLayoutAttributeNotAnAttribute
relatedBy:与什么有关,即是==,>=,<=
NSLayoutRelationLessThanOrEqual = -1,
NSLayoutRelationEqual = 0,
NSLayoutRelationGreaterThanOrEqual = 1,
toItem:到那个对象
multiplier:多少倍的增值,倍增器
constant:常量