苹果自带的原生自动布局方案太过繁琐,在此介绍一个简单好用的第三方框架。
1 //设置约束 2 - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block; 3 4 //如果之前已经有约束,则更新新的约束,如果没有约束,则添加约束 5 - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block; 6 7 //将之前的约束全部删除,添加新的约束 8 - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;
注:
使用前需把自定义的控件的 translatesAutoresizingMaskIntoConstraints属性设为NO;
//添加两个控件
UIView *blueView = [[UIView alloc] init];
blueView.backgroundColor = [UIColor blueColor];
blueView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:blueView];
UIView *redView = [[UIView alloc] init];
redView.backgroundColor = [UIColor redColor];
redView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:redView];
//给蓝色View设置约束
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view.mas_left).offset(30);//和父view的左边间距为30;
make.bottom.equalTo(self.view.mas_bottom).offset(-30);//和父view的底部间距为30;
make.right.equalTo(redView.mas_left).offset(-30);//和红色view的间距为30;
make.height.mas_equalTo(50);//蓝色view的高度为50
}];
//给红色View设置约束
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.view.mas_right).offset(-30);//和父view的右边间距为30;
make.bottom.equalTo(blueView.mas_bottom);//和蓝色view的底部对齐
make.height.equalTo(blueView.mas_height);//和蓝色view的高度相等
make.width.equalTo(blueView.mas_width);//和蓝色view的宽度相等
}];