mas_makeConstraints使用最多,作初始約束,只負責新增約束dom
mas_updateConstraints針對make中的約束作更新,通常不添加新約束,只是對於原約束數值的修改.ide
mas_remakeConstraints清除以前全部的約束,採用裏面設置的最新約束,經常使用於動畫以後新位置的約束設定函數
優先級高.priorityHigh,優先級低.priorityLow,一般用於根據條件判斷來設定優先響應哪一種約束動畫
multipliedBy(x)= *x,dividedBy(x)= /xspa
實現動畫時,更新約束後調用layoutIfNeededcode
make.edges.mas_equalTo(UIEdgeInsetsMake(10, 10, 10, 10));
// edges就是至關於top-left-bottom-right
// top和left裏的offset爲正數
// 那麼爲何bottom和right裏的offset是負數呢? 由於這裏計算的是絕對的數值 計算的bottom須要小
ip
於sv的底部高度 因此要-10 同理用於right
ci
// 有意思的地方是and和with 其實這兩個函數什麼事情都沒作,能夠省略的
/* 等價於
make.top.equalTo(weakSelf.sv).with.offset(10);
make.left.equalTo(weakSelf.sv).with.offset(10);
make.bottom.equalTo(weakSelf.sv).with.offset(-10);
make.right.equalTo(weakSelf.sv).with.offset(-10);
UIScrollView是一個有點特殊的view,對於在裏面放其餘view,最好的作法是先放一個containerView設置edges相等,而後在此view上添加subview.rem
模仿系統的UITabBarController的底部View,能夠設定個數和間隔:it
- (
void
)simulateSystemTabBarWithButtonCount:(NSInteger)count withSpace:(CGFloat)
space {
[self.view showPlaceHolder];
self.view.backgroundColor = [UIColor grayColor];
NSMutableArray *viewArray = [NSMutableArray arrayWithCapacity:10];
for
(
int
i = 0; i < count; i++) {
UIView *view = [UIView
new
];
view.backgroundColor = [UIColor colorWithHue:( arc4random() % 256 / 256.0 )
saturation:( arc4random() % 128 / 256.0 ) + 0.5
brightness:( arc4random() % 128 / 256.0 ) + 0.5
alpha:1];;
[view showPlaceHolder];
[self.view addSubview:view];
[viewArray addObject:view];
}
UIView *lastView = viewArray.lastObject;
for
(
int
i = 0; i < count; i++) {
UIView *view = (UIView *)viewArray[i];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(view.superview);
make.height.equalTo(@49);
make.width.equalTo(lastView);
if
(i == 0) {
make.left.mas_equalTo(view.superview).offset(space);
}
else
{
UIView *frontView = (UIView *)viewArray[i-1];
make.left.equalTo(frontView.mas_right).offset(space);
(i == viewArray.count - 1) ? make.right.mas_equalTo(view.superview).offset(-space) : nil;
}
}];
}
}