代码添加约束
目标
- 理解用纯代码设置自动布局约束的方法
- 理解为什么在使用自动布局开发时,千万不要修改 frame?
- 理解 VFL 语法
提示:自动布局方法的参数很多,第一次接触难免会有抵触情绪
但是参数的含义很容易懂!
为什么要学习纯代码的自动布局?
自己开发第三方框架会使用
其他第三方框架中会使用,遇到时能够看得懂
知识点
- 理解用
NSLayoutConstraint
类创建具体的约束对象的步骤与参数 - 理解用
VFL
添加自动布局的方法 - 理解
VFL
语法
用代码实现 Autolayout
的步骤
- 禁用
autoresizing
- 利用以下方法添加约束
/// 添加一个约束
- (void)addConstraint:(NSLayoutConstraint *)constraint;
/// 添加多个约束 VFL 专用
- (void)addConstraints:(NSArray *)constraints;
/// 创建一个约束
[NSLayoutConstraint constraintWithItem:...
/// 利用 VFL 创建多个约束
[NSLayoutConstraint constraintsWithVisualFormat:...
注意:约束添加的位置
- 如果约束没有参照任何其他视图,则约束添加在自身(苹果建议),或者父视图上(常见)
- 如果约束有参照父视图,则约束添加到父视图上
如果约束有参照兄弟视图,则约束添加到它们最近的父视图上
对于两个不同层级view之间的约束关系,添加到他们最近的共同父view上
案例 1 —— addConstraint
要求
- 定义一个视图 200 * 50
- 在任何设备上都摆放在屏幕的中心点
代码实现
- 代码准备
- (void)viewDidLoad {
[super viewDidLoad];
[self autoLayout1];
}
/**
* 案例 1
*
* 定义一个视图 200 * 50
* 在任何设备上都摆放在屏幕的中心点
*/
- (void)autoLayout1 {
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
v.backgroundColor = [UIColor redColor];
[self.view addSubview:v];
}
- 添加水平约束