现在iOS开发最多的莫过于:纯代码开发,对于纯代码开发,最常用的莫过于Masonry,下面根据我自己的经验总结下Masonry的一些使用方法。
基本方法
mas_makeConstraints只负责新增约束Autolayout不能同时存在两条针对于同一对象的约束否则会报错
mas_updateConstraints针对上面的情况会更新在block中出现的约束不会导致出现两个相同约束的情况
mas_remakeConstraints则会清除之前的所有约束仅保留最新的约束
常见约束的各种类型
/**
1.尺寸:width、height、size
2.边界:left、leading、right、trailing、top、bottom
3.中心点:center、centerX、centerY
4.边界:edges
5.偏移量:offset、insets、sizeOffset、centerOffset
6.priority()约束优先级(0~1000),multipler乘因数, dividedBy除因数
*/
使用实例
UIView*sv = [UIViewnew];
sv.backgroundColor= [UIColorredColor];
//在做autoLayout之前一定要先将view添加到superview上否则会报错
[selfaddSubview:sv];
//mas_makeConstraints就是Masonry的autolayout添加函数将所需的约束添加到block中行了
[svmas_makeConstraints:^(MASConstraintMaker*make) {
//********设置谁谁调这个方法********
//[要设置的View mas_makeConstraints:^(MASConstraintMaker *make) {
//********设置居中********
//make.center.equalTo(self);
//********设置水平居中********
//make.centerX.equalTo(self);
//********设置垂直居中********
//make.centerY.equalTo(self);
//********设置四周边距********
//make.edges.equalTo(相对于谁).with.insets(UIEdgeInsetsMake(距上,距左,距下,距右));
注意
//注意:上左下右相对的都是最远的边
//*********有多个相对对象********
/*等价于
make.top.equalTo(相对于谁).with.offset(10);
make.left.equalTo(相对于谁).with.offset(10);
make.bottom.equalTo(相对于谁).with.offset(-10);
make.right.equalTo(相对于谁).with.offset(-10);
*/
//********设置控件的大小********
//make.size.mas_equalTo(CGSizeMake(80, 80));
//********设置控件的宽度********
//make.width.mas_equalTo(300);
//********设置控件的高度********
//make.height.mas_equalTo(36);
更新约束点
make.width.equalTo(self.view.mas_width).multipliedBy(0.5);//设置宽度为self.view的一半,multipliedBy是倍数的意思,也就是,使宽度等于self.view宽度的0.5倍
make.width.and.height.equalTo(redView);//使宽高等于redView的宽高
make.leading.equalTo(redView.mas_right);//与redView右边的间距为0
make.bottom.right.equalTo(self.view).offset(-40);//同时设置两个属性
//trailing leading (相对于左右方向的头部和尾部)
make.leading.equalTo(_redView.mas_trailing).offset(40);
==
make.left.equalTo(_redView.mas_right).offset(40);这是等价的
以上是自己常用的Masonry的约束方式,和一些注意点,在项目中使用Masonry对于纯代码开发的工程师是非常重要的,大家一起学习。