使用代码实现Autolayout的方法

## 使用代码实现 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));

你可能感兴趣的:(使用代码实现Autolayout的方法)