mas_equalTo
,而相对于某个控件,或者某个控件的某个约束,我会使用equalTo
,如:make.size.mas_equalTo(CGSizeMake(100, 100));
make.center.equalTo(weakSelf.view);
setNeedsLayout
:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。layoutIfNeeded
:告知页面布局立刻更新。所以一般都会和setNeedsLayout
一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。layoutSubviews
:系统重写布局setNeedsUpdateConstraints
:告知需要更新约束,但是不会立刻开始updateConstraintsIfNeeded
:告知立刻更新约束updateConstraints
:系统更新约束- (void)updateViewConstraints
ViewController的View在更新视图布局时,会先调用ViewController的updateViewConstraints 方法。我们可以通过重写这个方法去更新当前View的内部布局,而不用再继承这个View去重写-updateConstraints方法。我们在重写这个方法时,务必要调用 super 或者 调用当前View的 -updateConstraints 方法。 // 防止block中的循环引用
__weak typeof(self) weakSelf = self;
UIView* view = [UIView new];
view.backgroundColor = [UIColor brownColor];
[self.view addSubview:view];
//使用mas_makeConstraints添加约束
[view mas_makeConstraints:^(MASConstraintMaker *make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(CGSizeMake(200, 200));
// 添加居中约束(居中方式与self相同)
make.center.equalTo(weakSelf.view);
}];
一、equalTo:仅支持基本类型
mas_equalTo:支持类型转换,支持复杂类型。是对equalTo的封装。支持CGSize CGPoint NSNumber UIEdgeinsets
以下实现的是相同的效果
make.width.mas_equalTo(100);
二、mas_equalTo是一个Macro,比较值,equalTo比较View
以下实现的是相同的效果
make. bottom . mas_equalTo (ws. view . mas_bottom );make.bottom.equalTo(ws.view);
三、去掉mas_前缀,只用equalTo即可,添加到.prefix文件#import "Masonry.h"