概述
- 从此前给控件通过OC和VFL两种代码添加约束可以看到,代码添加约束非常繁琐,代码量较大,且不易理解和阅读,所以通常情况下,我们能够使用storyboard添加约束的一般就使用故事板添加,若是需要同时用到storyboard和代码的情况,建议使用第三方框架Masonry
- Masonry概述
- 目前最流行的Autolayout第三方框架
- 代码通俗易懂,省去了苹果官方的复杂代码形式
基本使用
- (void)viewDidLoad {
[super viewDidLoad]
// 1.创建二个子视图,添加到父视图上面
UIView *redView = [[UIView alloc] init]
redView.backgroundColor = [UIColor redColor]
[self.view addSubview:redView]
UIView *blueView = [[UIView alloc] init]
blueView.backgroundColor = [UIColor blueColor]
[self.view addSubview:blueView]
// 2.禁止红色View的Autgoresizing
blueView.translatesAutoresizingMaskIntoConstraints = NO
redView.translatesAutoresizingMaskIntoConstraints = NO
// 3.添加约束
// 3.1添加红色约束
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
// make代表当前视图,添加左边约束
make.left.equalTo(self.view.mas_left).offset(20)
// 添加上边约束
make.top.equalTo(self.view.mas_top).offset(20)
// 添加右边约束
make.right.equalTo(self.view.mas_right).offset(-20)
// 添加高度约束
make.height.equalTo(@50)
}]
// 3.2添加蓝色约束
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {
// 添加右边约束
make.right.equalTo(redView.mas_right)
// 添加上边约束
make.top.equalTo(redView.mas_bottom).offset(20)
// 添加宽度约束
make.width.equalTo(redView.mas_width).multipliedBy(0.5)
// 添加高度约束
make.height.equalTo(redView.mas_height)
}]
}
- 从上述示例代码,可以看到约束添加的代码简单,可读性强
- 补充,只需要在导入Masonry.h之前,添加上一上两个宏, 就可以简化代码
#define MAS_SHORTHAND
#define MAS_SHORTHAND_GLOBALS
#import "Masonry.h"
#define MAS_SHORTHAND
#define MAS_SHORTHAND_GLOBALS