Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性,而且同时支持 iOS 和 Max OS X。Masonry是一个用代码写iOS或OS界面的库,可以代替Auto layout。Masonry的github地址:https://github.com/SnapKit/Masonry
本章内容
- Masonry配置
- Masonry使用
- Masonry实例
Masonry配置
- 推荐使用pods方式引入类库,pod 'Masonry',若不知道pod如何使用,情况我的另一篇文章: 提高ios开发效率的工具
- 引入头文件 #import "Masonry.h"
Masonry使用讲解
mas_makeConstraints 是给view添加约束,约束有几种,分别是边距,宽,高,左上右下距离,基准线。添加过约束后可以有修正,修正有offset(位移)修正和multipliedBy(倍率)修正。
语法一般是 make.equalTo or make.greaterThanOrEqualTo or make.lessThanOrEqualTo + 倍数和位移修正。
注意点1: 使用 mas_makeConstraints方法的元素必须事先添加到父元素的中,例如[self.view addSubview:view];
注意点2: masequalTo 和 equalTo 区别:masequalTo 比equalTo多了类型转换操作,一般来说,大多数时候两个方法都是 通用的,但是对于数值元素使用mas_equalTo。对于对象或是多个属性的处理,使用equalTo。特别是多个属性时,必须使用equalTo,例如 make.left.and.right.equalTo(self.view);
注意点3: 注意到方法with和and,这连个方法其实没有做任何操作,方法只是返回对象本身,这这个方法的左右完全是为了方法写的时候的可读性 。make.left.and.right.equalTo(self.view);和make.left.right.equalTo(self.view);是完全一样的,但是明显的加了and方法的语句可读性 更好点。
Masonry初级使用例子
1 // exp1: 中心点与self.view相同,宽度为400*400
2 -(void)exp1{
3 UIView *view = [UIView new];
4 [view setBackgroundColor:[UIColor redColor]];
5 [self.view addSubview:view];
6 [view mas_makeConstraints:^(MASConstraintMaker *make) {
7 make.center.equalTo(self.view);
8 make.size.mas_equalTo(CGSizeMake(400,400));
9 }];
10 }
11 //exp2: 上下左右边距都为10
12 -(void)exp2{
13 UIView *view = [UIView new];
14 [view setBackgroundColor:[UIColor redColor]];
15 [self.view addSubview:view];
16 [view mas_makeConstraints:^(MASConstraintMaker *make) {
17 make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 10, 10));
18 // make.left.equalTo(self.view).with.offset(10);
19 // make.right.equalTo(self.view).with.offset(-10);
20 // make.top.equalTo(self.view).with.offset(10);
21 // make.bottom.equalTo(self.view).with.offset(-10);
22 }];
23 }
24 //exp3 让两个高度为150的view垂直居中且等宽且等间隔排列 间隔为10
25 -(void)exp3{
26 UIView *view1 = [UIView new];
27 [view1 setBackgroundColor:[UIColor redColor]];
28 [self.view addSubview:view1];
29 UIView *view2 = [UIView new];
30 [view2 setBackgroundColor:[UIColor redColor]];
31 [self.view addSubview:view2];
32 [view1 mas_makeConstraints:^(MASConstraintMaker *make) {
33 make.centerY.mas_equalTo(self.view.mas_centerY);
34 make.height.mas_equalTo(150);
35 make.width.mas_equalTo(view2.mas_width);
36 make.left.mas_equalTo(self.view.mas_left).with.offset(10);
37 make.right.mas_equalTo(view2.mas_left).offset(-10);
38 }];
39 [view2 mas_makeConstraints:^(MASConstraintMaker *make) {
40 make.centerY.mas_equalTo(self.view.mas_centerY);
41 make.height.mas_equalTo(150);
42 make.width.mas_equalTo(view1.mas_width);
43 make.left.mas_equalTo(view1.mas_right).with.offset(10);
44 make.right.equalTo(self.view.mas_right).offset(-10);
45 }];
46 }
Masonry高级使用例子1
iOS计算器使用Masorny布局:
1 //高级布局练习 ios自带计算器布局
2 -(void)exp4{
3 //申明区域,displayView是显示区域,keyboardView是键盘区域
4 UIView *displayView = [UIView new];
5 [displayView setBackgroundColor:[UIColor blackColor]];
6 [self.view addSubview:displayView];
7 UIView *keyboardView = [UIView new];
8 [self.view addSubview:keyboardView];
9 //先按1:3分割 displView(显示结果区域)和 keyboardView(键盘区域)
10 [displayView mas_makeConstraints:^(MASConstraintMaker *make) {
11 make.top.equalTo(self.view.mas_top);
12 make.left.and.right.equalTo(self.view);
13 make.height.equalTo(keyboardView).multipliedBy(0.3f);
14 }];
15 [keyboardView mas_makeConstraints:^(MASConstraintMaker *make) {
16 make.top.equalTo(displayView.mas_bottom);
17 make.bottom.equalTo(self.view.mas_bottom);
18 make.left.and.right.equalTo(self.view);
19 }];
20 //设置显示位置的数字为0
21 UILabel *displayNum = [[UILabel alloc]init];
22 [displayView addSubview:displayNum];
23 displayNum.text = @"0";
24 displayNum.font = [UIFont fontWithName:@"HeiTi SC" size:70];
25 displayNum.textColor = [UIColor whiteColor];
26 displayNum.textAlignment = NSTextAlignmentRight;
27 [displayNum mas_makeConstraints:^(MASConstraintMaker *make) {
28 make.left.and.right.equalTo(displayView).with.offset(-10);
29 make.bottom.equalTo(displayView).with.offset(-10);
30 }];
31 //定义键盘键名称,?号代表合并的单元格
32 NSArray *keys = @[@"AC",@"+/-",@"%",@"÷"
33 ,@"7",@"8",@"9",@"x"
34 ,@"4",@"5",@"6",@"-"
35 ,@"1",@"2",@"3",@"+"
36 ,@"0",@"?",@".",@"="];
37 int indexOfKeys = 0;
38 for (NSString *key in keys){
39 //循环所有键
40 indexOfKeys++;
41 int rowNum = indexOfKeys %4 ==0? indexOfKeys/4:indexOfKeys/4 +1;
42 int colNum = indexOfKeys %4 ==0? 4 :indexOfKeys %4;
43 NSLog(@"index is:%d and row:%d,col:%d",indexOfKeys,rowNum,colNum);
44 //键样式
45 UIButton *keyView = [UIButton buttonWithType:UIButtonTypeCustom];
46 [keyboardView addSubview:keyView];
47 [keyView setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
48 [keyView setTitle:key forState:UIControlStateNormal];
49 [keyView.layer setBorderWidth:1];
50 [keyView.layer setBorderColor:[[UIColor blackColor]CGColor]];
51 [keyView.titleLabel setFont:[UIFont fontWithName:@"Arial-BoldItalicMT" size:30]];
52 //键约束
53 [keyView mas_makeConstraints:^(MASConstraintMaker *make) {
54 //处理 0 合并单元格
55 if([key isEqualToString:@"0"] || [key isEqualToString:@"?"] ){
56 if([key isEqualToString:@"0"]){
57 [keyView mas_makeConstraints:^(MASConstraintMaker *make) {
58 make.height.equalTo(keyboardView.mas_height).with.multipliedBy(.2f);
59 make.width.equalTo(keyboardView.mas_width).multipliedBy(.5);
60 make.left.equalTo(keyboardView.mas_left);
61 make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.9f);
62 }];
63 }if([key isEqualToString:@"?"]){
64 [keyView removeFromSuperview];
65 }
66 }
67 //正常的单元格
68 else{
69 make.width.equalTo(keyboardView.mas_width).with.multipliedBy(.25f);
70 make.height.equalTo(keyboardView.mas_height).with.multipliedBy(.2f);
71 //按照行和列添加约束,这里添加行约束
72 switch (rowNum) {
73 case 1:
74 {
75 make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.1f);
76 keyView.backgroundColor = [UIColor colorWithRed:205 green:205 blue:205 alpha:1];
77 }
78 break;
79 case 2:
80 {
81 make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.3f);
82 }
83 break;
84 case 3:
85 {
86 make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.5f);
87 }
88 break;
89 case 4:
90 {
91 make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.7f);
92 }
93 break;
94 case 5:
95 {
96 make.baseline.equalTo(keyboardView.mas_baseline).with.multipliedBy(.9f);
97 }
98 break;
99 default:
100 break;
101 }
102 //按照行和列添加约束,这里添加列约束
103 switch (colNum) {
104 case 1:
105 {
106 make.left.equalTo(keyboardView.mas_left);
107 }
108 break;
109 case 2:
110 {
111 make.right.equalTo(keyboardView.mas_centerX);
112 }
113 break;
114 case 3:
115 {
116 make.left.equalTo(keyboardView.mas_centerX);
117 }
118 break;
119 case 4:
120 {
121 make.right.equalTo(keyboardView.mas_right);
122 [keyView setBackgroundColor:[UIColor colorWithRed:243 green:127 blue:38 alpha:1]];
123 }
124 break;
125 default:
126 break;
127 }
128 }
129 }];
130 }
131 }
本例子使用的baseline去控制高度位置,这似乎不是太准,如果想要精准控制高度位置,可以使用一行一行添加的方法,每次当前行的top去equelTo上一行的bottom。 给个提示:
1 for(遍历所有行)
2 for(遍历所以列)
3 //当前行约束根据上一行去设置
4 ......
下一个例子中,使用上面类似的方法
Masonry高级使用例子2
根据设计图,使用masonry布局:
步骤1
步骤2
步骤1
1 -(void)createUI{
2 UIView *titleView = [UIView new];
3 titleView.backgroundColor = [UIColor redColor];
4 UIView *caredView = [UIView new];
5 [self.view addSubview:caredView];
6 UIView *brifeView = [UIView new];
7 [self.view addSubview:brifeView];
8 //self.view
9 self.view.backgroundColor = [UIColor colorWithWhite:0.965 alpha:1.000];
10 //thrm
11 UIImageView *plantThrm = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"defalutPlantReferenceIcon"]];
12 [self.view addSubview:plantThrm];
13 [plantThrm mas_makeConstraints:^(MASConstraintMaker *make) {
14 make.left.and.top.equalTo(self.view).with.offset(10);
15 }];
16 //title
17 [self.view addSubview:titleView];
18 UIImageView *bgTitleView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bg-plant-reference-title"]];
19 [titleView addSubview:bgTitleView];
20 [titleView mas_makeConstraints:^(MASConstraintMaker *make) {
21 make.right.equalTo(self.view.mas_right);
22 make.left.equalTo(plantThrm.mas_right).with.offset(20);
23 make.centerY.equalTo(plantThrm.mas_centerY);
24 }];
25 [bgTitleView mas_makeConstraints:^(MASConstraintMaker *make) {
26 make.edges.equalTo(titleView);
27 }];
28 UILabel *title = [[UILabel alloc]init];
29 title.textColor = [UIColor whiteColor];
30 title.font = [UIFont fontWithName:@"Heiti SC" size:26];
31 title.text = _reference.name;
32 [titleView addSubview:title];
33 [title mas_makeConstraints:^(MASConstraintMaker *make) {
34 make.left.equalTo(titleView.mas_left).offset(10);
35 make.width.equalTo(titleView.mas_width);
36 make.centerY.equalTo(titleView.mas_centerY);
37 }];
38 //植物养护
39 UILabel *caredTitle = [[UILabel alloc]init];
40 caredTitle.textColor = [UIColor colorWithRed:0.172 green:0.171 blue:0.219 alpha:1.000];
41 caredTitle.font = [UIFont fontWithName:@"Heiti SC" size:10];
42 caredTitle.text = @"植物养护";
43 [self.view addSubview:caredTitle];
44 [caredTitle mas_makeConstraints:^(MASConstraintMaker *make) {
45 make.top.equalTo(plantThrm.mas_bottom).with.offset(20);
46 make.left.and.right.equalTo(self.view).with.offset(10);
47 make.height.mas_equalTo(10);
48 }];
49 //将图层的边框设置为圆脚
50 caredView.layer.cornerRadius = 5;
51 caredView.layer.masksToBounds = YES;
52 //给图层添加一个有色边框
53 caredView.layer.borderWidth = 1;
54 caredView.layer.borderColor = [[UIColor colorWithWhite:0.521 alpha:1.000] CGColor];
55 caredView.backgroundColor = [UIColor whiteColor];
56 [caredView mas_makeConstraints:^(MASConstraintMaker *make) {
57 make.top.equalTo(caredTitle.mas_bottom).with.offset(5);
58 make.left.equalTo(self.view.mas_left).with.offset(10);
59 make.right.equalTo(self.view.mas_right).with.offset(-10);
60 make.height.equalTo(brifeView);
61 }];
62 //植物简介
63 UILabel *brifeTitle = [[UILabel alloc]init];
64 brifeTitle.textColor = [UIColor colorWithRed:0.172 green:0.171 blue:0.219 alpha:1.000];
65 brifeTitle.font = [UIFont fontWithName:@"Heiti SC" size:10];
66 brifeTitle.text = @"植物简介";
67 [self.view addSubview:brifeTitle];
68 [brifeTitle mas_makeConstraints:^(MASConstraintMaker *make) {
69 make.top.equalTo(caredView.mas_bottom).with.offset(20);
70 make.left.and.right.equalTo(self.view).with.offset(10);
71 make.height.mas_equalTo(10);
72 }];
73 //将图层的边框设置为圆脚
74 brifeView.layer.cornerRadius = 5;
75 brifeView.layer.masksToBounds = YES;
76 //给图层添加一个有色边框
77 brifeView.layer.borderWidth = 1;
78 brifeView.layer.borderColor = [[UIColor colorWithWhite:0.521 alpha:1.000] CGColor];
79 brifeView.backgroundColor = [UIColor whiteColor];
80 [brifeView mas_makeConstraints:^(MASConstraintMaker *make) {
81 make.top.equalTo(brifeTitle.mas_bottom).with.offset(5);
82 make.left.equalTo(self.view.mas_left).with.offset(10);
83 make.right.equalTo(self.view.mas_right).with.offset(-10);
84 make.bottom.equalTo(self.view.mas_bottom).with.offset(-10);
85 make.height.equalTo(caredView);
86 }];
87 }
完成之后如下图 步骤1
步骤2,在上面的基础上,增加植物养护部分ui构造的代码,思想是,先构造出四行,然后根据每行单独构造出行样式。
1 //把块拆分为四行
2 -(void)createIndexUIWithView:(UIView *)view{
3 //拆分四行
4 UIView *row1 = [UIView new];
5 UIView *row2 = [UIView new];
6 UIView *row3 = [UIView new];
7 UIView *row4 = [UIView new];
8 [view addSubview:row1];
9 [view addSubview:row2];
10 [view addSubview:row3];
11 [view addSubview:row4];
12 [row1 mas_makeConstraints:^(MASConstraintMaker *make) {
13 make.right.and.left.equalTo(view);
14 make.height.equalTo(view.mas_height).multipliedBy(0.25);
15 make.top.equalTo(view.mas_top);
16 }];
17 [row2 mas_makeConstraints:^(MASConstraintMaker *make) {
18 make.right.and.left.equalTo(view);
19 make.top.equalTo(row1.mas_bottom);
20 make.height.equalTo(view.mas_height).multipliedBy(0.25);
21 }];
22 [row3 mas_makeConstraints:^(MASConstraintMaker *make) {
23 make.right.equalTo(view.mas_right);
24 make.top.equalTo(row2.mas_bottom);
25 make.height.equalTo(view.mas_height).multipliedBy(0.25);
26 make.left.equalTo(view.mas_left);
27 }];
28 [row4 mas_makeConstraints:^(MASConstraintMaker *make) {
29 make.right.and.left.equalTo(view);
30 make.top.equalTo(row3.mas_bottom);
31 make.height.equalTo(view.mas_height).multipliedBy(0.25);
32 }];
33 [self createIndexRowUI:PlantReferenceWaterIndex withUIView:row1];
34 [self createIndexRowUI:PlantReferenceSumIndex withUIView:row2];
35 [self createIndexRowUI:PlantReferenceTemperatureIndex withUIView:row3];
36 [self createIndexRowUI:PlantReferenceElectrolyteIndex withUIView:row4];
37 }
38 //构造每行的UI
39 -(void)createIndexRowUI:(PlantReferenceIndex) index withUIView:(UIView *)view{
40 //index标题
41 UILabel *indexTitle = [UILabel new];
42 indexTitle.font = [UIFont fontWithName:@"HeiTi SC" size:14];
43 indexTitle.textColor = [UIColor colorWithWhite:0.326 alpha:1.000];
44 [view addSubview:indexTitle];
45 [indexTitle mas_makeConstraints:^(MASConstraintMaker *make) {
46 make.left.equalTo(view.mas_left).with.offset(20);
47 make.centerY.equalTo(view.mas_centerY);
48 }];
49 switch (index) {
50 case PlantReferenceWaterIndex:
51 {
52 indexTitle.text = @"水分";
53 UIImageView * current;
54 for(int i=1;i<=5;i++){
55 if(i<_reference.waterIndex){
56 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_water_light"]];
57 }else{
58 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_water_dark"]];
59 }
60 [view addSubview:current];
61 //间距12%,左边留空30%
62 [current mas_makeConstraints:^(MASConstraintMaker *make) {
63 make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1) +0.3);
64 make.centerY.equalTo(view.mas_centerY);
65 }];
66 }
67 }
68 break;
69 case PlantReferenceSumIndex:
70 {
71 indexTitle.text = @"光照";
72 UIImageView * current;
73 for(int i=1;i<=5;i++){
74 if(i<_reference.temperatureIndex){
75 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_summer_light"]];
76 }else{
77 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_summer_dark"]];
78 }
79 [view addSubview:current];
80 //间距12%,左边留空30%
81 [current mas_makeConstraints:^(MASConstraintMaker *make) {
82 make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1) +0.3);
83 make.centerY.equalTo(view.mas_centerY);
84 }];
85 }
86 }
87 break;
88 case PlantReferenceTemperatureIndex:
89 {
90 indexTitle.text = @"温度";
91 UIImageView * current;
92 for(int i=1;i<=5;i++){
93 if(i<_reference.sumIndex){
94 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_temperature_light"]];
95 }else{
96 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_temperature_dark"]];
97 }
98 [view addSubview:current];
99 //间距12%,左边留空30%
100 [current mas_makeConstraints:^(MASConstraintMaker *make) {
101 make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1) +0.3);
102 make.centerY.equalTo(view.mas_centerY);
103 }];
104 }
105 }
106 break;
107 case PlantReferenceElectrolyteIndex:
108 {
109 indexTitle.text = @"肥料";
110 UIImageView * current;
111 for(int i=1;i<=5;i++){
112 if(i<_reference.electrolyteIndex){
113 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_electolyte_light"]];
114 }else{
115 current = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_electolyte_dark"]];
116 }
117 [view addSubview:current];
118 //间距12%,左边留空30%
119 [current mas_makeConstraints:^(MASConstraintMaker *make) {
120 make.left.equalTo(view.mas_right).with.multipliedBy(0.12*(i-1) +0.3);
121 make.centerY.equalTo(view.mas_centerY);
122 }];
123 }
124 }
125 break;
126 default:
127 break;
128 }
129 }
130 //在步骤1createui的基础上,做了一些微调。
131 -(void)createUI{
132 self.title = _reference.name;
133 UIView *titleView = [UIView new];
134 UIView *caredView = [UIView new];
135 [self.view addSubview:caredView];
136 UITextView *brifeView = [UITextView new];
137 [self.view addSubview:brifeView];
138 //self.view
139 self.view.backgroundColor = [UIColor colorWithWhite:0.965 alpha:1.000];
140 //thrm
141 UIImageView *plantThrm = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"defalutPlantReferenceIcon"]];
142 [self.view addSubview:plantThrm];
143 [plantThrm mas_makeConstraints:^(MASConstraintMaker *make) {
144 make.left.and.top.equalTo(self.view).with.offset(10);
145 }];
146 //title
147 [self.view addSubview:titleView];
148 UIImageView *bgTitleView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bg-plant-reference-title"]];
149 [titleView addSubview:bgTitleView];
150 [titleView mas_makeConstraints:^(MASConstraintMaker *make) {
151 make.right.equalTo(self.view.mas_right);
152 make.left.equalTo(plantThrm.mas_right).with.offset(20);
153 make.centerY.equalTo(plantThrm.mas_centerY);
154 }];
155 [bgTitleView mas_makeConstraints:^(MASConstraintMaker *make) {
156 make.edges.equalTo(titleView);
157 }];
158 UILabel *title = [[UILabel alloc]init];
159 title.textColor = [UIColor whiteColor];
160 title.font = [UIFont fontWithName:@"Heiti SC" size:26];
161 title.text = _reference.name;
162 [titleView addSubview:title];
163 [title mas_makeConstraints:^(MASConstraintMaker *make) {
164 make.left.equalTo(titleView.mas_left).offset(10);
165 make.width.equalTo(titleView.mas_width);
166 make.centerY.equalTo(titleView.mas_centerY);
167 }];
168 //植物养护
169 UILabel *caredTitle = [[UILabel alloc]init];
170 caredTitle.textColor = [UIColor colorWithRed:0.172 green:0.171 blue:0.219 alpha:1.000];
171 caredTitle.font = [UIFont fontWithName:@"Heiti SC" size:10];
172 caredTitle.text = @"植物养护";
173 [self.view addSubview:caredTitle];
174 [caredTitle mas_makeConstraints:^(MASConstraintMaker *make) {
175 make.top.equalTo(plantThrm.mas_bottom).with.offset(20);
176 make.left.and.right.equalTo(self.view).with.offset(10);
177 make.height.mas_equalTo(10);
178 }];
179 //植物养护 数据
180 [self createIndexUIWithView:caredView];
181 //将图层的边框设置为圆脚
182 caredView.layer.cornerRadius = 5;
183 caredView.layer.masksToBounds = YES;
184 //给图层添加一个有色边框
185 caredView.layer.borderWidth = 1;
186 caredView.layer.borderColor = [[UIColor colorWithWhite:0.521 alpha:1.000] CGColor];
187 caredView.backgroundColor = [UIColor whiteColor];
188 [caredView mas_makeConstraints:^(MASConstraintMaker *make) {
189 make.top.equalTo(caredTitle.mas_bottom).with.offset(5);
190 make.left.equalTo(self.view.mas_left).with.offset(10);
191 make.right.equalTo(self.view.mas_right).with.offset(-10);
192 make.height.equalTo(brifeView);
193 }];
194 //植物简介
195 UILabel *brifeTitle = [[UILabel alloc]init];
196 brifeTitle.textColor = [UIColor colorWithRed:0.172 green:0.171 blue:0.219 alpha:1.000];
197 brifeTitle.font = [UIFont fontWithName:@"Heiti SC" size:10];
198 brifeTitle.text = @"植物简介";
199 [self.view addSubview:brifeTitle];
200 [brifeTitle mas_makeConstraints:^(MASConstraintMaker *make) {
201 make.top.equalTo(caredView.mas_bottom).with.offset(20);
202 make.left.and.right.equalTo(self.view).with.offset(10);
203 make.height.mas_equalTo(10);
204 }];
205 //将图层的边框设置为圆脚
206 brifeView.layer.cornerRadius = 5;
207 brifeView.layer.masksToBounds = YES;
208 //给图层添加一个有色边框
209 brifeView.layer.borderWidth = 1;
210 brifeView.layer.borderColor = [[UIColor colorWithWhite:0.447 alpha:1.000] CGColor];
211 brifeView.backgroundColor = [UIColor whiteColor];
212 //文字样式
213 // brifeView.textColor = [UIColor colorWithWhite:0.352 alpha:1.000];
214 // brifeView.font = [UIFont fontWithName:@"HeiTi SC" size:12];
215 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
216 paragraphStyle.lineHeightMultiple = 20.f;
217 paragraphStyle.maximumLineHeight = 25.f;
218 paragraphStyle.minimumLineHeight = 15.f;
219 paragraphStyle.alignment = NSTextAlignmentJustified;
220 NSDictionary *attributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:12], NSParagraphStyleAttributeName:paragraphStyle, NSForegroundColorAttributeName:[UIColor colorWithWhite:0.447 alpha:1.000]};
221 //植物简介数据
222 //brifeView.text = _reference.brief;
223 brifeView.attributedText = [[NSAttributedString alloc] initWithString: _reference.brief attributes:attributes];
224 [brifeView mas_makeConstraints:^(MASConstraintMaker *make) {
225 make.top.equalTo(brifeTitle.mas_bottom).with.offset(5);
226 make.left.equalTo(self.view.mas_left).with.offset(10);
227 make.right.equalTo(self.view.mas_right).with.offset(-10);
228 make.bottom.equalTo(self.view.mas_bottom).with.offset(-10);
229 make.height.equalTo(caredView);
230 }];
231 }
完成之后如下图 步骤2