Day4 : 学习使用代码构建AutoLayout
今天主要优化了项目的添加数据界面,使用VFL语句来构建constraints。VFL语句比较长,而且可读性很差。现在考虑转成使用Masonry来做。下面看看这两种语句的区别:
一、VFL语句是这样的:
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[buttonImage(>=buttonHeight)][tittleField(>=minHeight)][div1(1)][soilField(>=minHeight)][div2(1)][dateField(>=minHeight)]-44-|" options:0 metrics:@{@"buttonHeight":@(kButtonHeight), @"minHeight":@(kJVFieldHeight)} views:NSDictionaryOfVariableBindings(buttonImage, tittleField, div1, soilField, div2, dateField)]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:dateField attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:div3 attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0.0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:dateField attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:timeField attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0.0]];
二、Masonry语句是这样的:
[buttonImage mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_greaterThanOrEqualTo(kButtonHeight); make.left.equalTo(self.view.mas_left); make.right.equalTo(self.view.mas_right); make.top.equalTo(self.view.mas_top); make.bottom.equalTo(tittleField.mas_top); }]; [tittleField mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_greaterThanOrEqualTo(kJVFieldHeight); make.top.equalTo(buttonImage.mas_bottom); make.left.equalTo(self.view.mas_left).with.offset(kJVFieldHMargin); make.right.equalTo(self.view.mas_right).with.offset(-kJVFieldHMargin); }]; [div1 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(tittleField.mas_bottom); make.left.equalTo(self.view.mas_left); make.right.equalTo(self.view.mas_right); make.height.mas_equalTo(1); }]; [soilField mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_greaterThanOrEqualTo(kJVFieldHeight); make.top.equalTo(tittleField.mas_bottom); make.left.equalTo(self.view.mas_left).with.offset(kJVFieldHMargin); make.right.equalTo(self.view.mas_right).with.offset(-kJVFieldHMargin); }];
我这个ui写的有点复杂了(界面上的控件比较多),所以Masonry的句子加起来很长。Masronry的语句更接近自然语言,易读性还是要比原生的使用VFL语句强。
在研究Masonry的时候,还接触到了cocoaPods,一个强大的第三方库管理。他可以:
1.搜索、下载、导入第三方库,一气呵成。
2.持续的更新第三方库的版本,不需要反复的删除导入。
3.利于团队开发协作。
目前在做的项目没有启用cocoaPods,因为他导入第三方库后会生成一个新的xworkspace文件,和原本的文件结构有比较大的区别,所以打算下一项目再使用。
PS.好吧,这两天不舒服,写博客进度慢了,但是还是按计划做好了,算对得起自己的时间吧。

浙公网安备 33010602011771号