## 使用代码实现 Autolayout 的方法1
- 创建 添加 约束
NSLayoutConstraint *greenRight = [NSLayoutConstraint constraintWithItem:greenView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];
[self.view addConstraint:greenRight];
- 注意
- 一定要在拥有父空间之后再添加约束
- 关闭Autoresizing 功能
view.translatesAutoresizingMaskIntoConstraints = NO;
##使用代码实现 Autolayout 的方法2 - VFL
- 使用VFL创建约束数组
//给绿色的图片一个约束 水平 和 红色图片 同高 同低
NSString *cons = @"H:|-margin-[greenView]-margin-[redView(==greenView)]-margin-|";
NSDictionary *views = NSDictionaryOfVariableBindings(greenView,redView);
NSDictionary *metrics = NSDictionaryOfVariableBindings(margin);
NSArray *constrations = [NSLayoutConstraint constraintsWithVisualFormat:cons options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:metrics views:views];
[self.view addConstraints:constrations];
//设置绿色的高度 还有距离低的距离
NSNumber *height = @100;
NSString *cons1 = @"V:[greenView(height)]-margin-|";
NSDictionary *metrics1 = NSDictionaryOfVariableBindings(height,margin);
NSArray *constrations1 = [NSLayoutConstraint constraintsWithVisualFormat:cons1 options:kNilOptions metrics:metrics1 views:views];
[self.view addConstraints:constrations1];
- format: VFL语句
- opts: 约束类型
- metrics:VFL语句中用到的具体数值
- views: VFL语句中用到的控件
使用下面的宏来自动生成views 和 metrics 的参数
NSString *cons = @"H:|-margin-[greenView]-margin-[redView(==greenView)]-margin-|";
NSDictionary *views = NSDictionaryOfVariableBindings(greenView,redView);
NSDictionary *metrics1 = NSDictionaryOfVariableBindings(height,margin)
##使用代码实现 Autolayout 的方法三 - masonry
-使用步骤
1.添加Masonry 文件夹的所有源代码到项目中
2.添加两个宏导入头文件
/ 只要添加了这个宏,就不用带mas_前缀
#define MAS_SHORTHAND
只要添加了这个宏,equalTo就等价于mas_equalTo
#define MAS_SHORTHAND_GLOBALS
这个头文件一定要放在上面两个宏的后面
#import "Masonry.h"
-添加约束的方法
1.这个方法只会添加新的约束
[view makeConstraints:^(MASConstraintMake *make)
{
}];
2.这个方法会将以前的所有约束删掉,添加新的约束
[view remakeConstraints:^(MASConstraintMake *make)
{
}];
3.这个方法将会覆盖以前的某些特定约束
[view updateConstraints:^(MASConstraintMake *make){
}];
1.
- 结束的类型
1.尺寸:width height size 使用
make.height.mas_equalTo(redView.mas_height);
make.height.mas_equalTo(100);
2.边界:left leading right trailing top bottom
mark.left.mas_equalTo(self.view.mas_left).offset(50);
mark.right.mas_equalTo(self.view.mas_right).offset(-50);
3.中心点:center centerX centerY
mark.centerX.mas_equalTo(self.view).multipliedBy(1);
mark.centerY.mas_equalTo(self.view).multipliedBy(1);
mark.center.mas_equalTo(self.view);
4.边界:edges
make.edges.mas_equalTo(self.view).insets(UIEdgeInsetsMake(50,100,100,150));