現(xiàn)在iOS開發(fā)最多的莫過于:純代碼開發(fā)橱脸,對于純代碼開發(fā),最常用的莫過于Masonry,下面根據(jù)我自己的經(jīng)驗總結(jié)下Masonry的一些使用方法窒盐。
基本方法
mas_makeConstraints只負(fù)責(zé)新增約束Autolayout不能同時存在兩條針對于同一對象的約束否則會報錯
mas_updateConstraints針對上面的情況會更新在block中出現(xiàn)的約束不會導(dǎo)致出現(xiàn)兩個相同約束的情況
mas_remakeConstraints則會清除之前的所有約束僅保留最新的約束
常見約束的各種類型
/**
1.尺寸:width、height钢拧、size
2.邊界:left蟹漓、leading、right源内、trailing葡粒、top、bottom
3.中心點(diǎn):center膜钓、centerX嗽交、centerY
4.邊界:edges
5.偏移量:offset、insets颂斜、sizeOffset夫壁、centerOffset
6.priority()約束優(yōu)先級(0~1000),multipler乘因數(shù),?dividedBy除因數(shù)
*/
使用實例
UIView*sv = [UIViewnew];
sv.backgroundColor= [UIColorredColor];
//在做autoLayout之前一定要先將view添加到superview上否則會報錯
[selfaddSubview:sv];
//mas_makeConstraints就是Masonry的autolayout添加函數(shù)將所需的約束添加到block中行了
[svmas_makeConstraints:^(MASConstraintMaker*make) {
//********設(shè)置誰誰調(diào)這個方法********
//[要設(shè)置的View mas_makeConstraints:^(MASConstraintMaker *make) {
//********設(shè)置居中********
//make.center.equalTo(self);
//********設(shè)置水平居中********
//make.centerX.equalTo(self);
//********設(shè)置垂直居中********
//make.centerY.equalTo(self);
//********設(shè)置四周邊距********
//make.edges.equalTo(相對于誰).with.insets(UIEdgeInsetsMake(距上,距左,距下,距右));
注意
//注意:上左下右相對的都是最遠(yuǎn)的邊
//*********有多個相對對象********
/*等價于
make.top.equalTo(相對于誰).with.offset(10);
make.left.equalTo(相對于誰).with.offset(10);
make.bottom.equalTo(相對于誰).with.offset(-10);
make.right.equalTo(相對于誰).with.offset(-10);
*/
//********設(shè)置控件的大形执********
//make.size.mas_equalTo(CGSizeMake(80, 80));
//********設(shè)置控件的寬度********
//make.width.mas_equalTo(300);
//********設(shè)置控件的高度********
//make.height.mas_equalTo(36);
更新約束點(diǎn)
make.width.equalTo(self.view.mas_width).multipliedBy(0.5);//設(shè)置寬度為self.view的一半盒让,multipliedBy是倍數(shù)的意思,也就是司蔬,使寬度等于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);//同時設(shè)置兩個屬性
//trailing??? leading (相對于左右方向的頭部和尾部)
make.leading.equalTo(_redView.mas_trailing).offset(40);
==
make.left.equalTo(_redView.mas_right).offset(40);這是等價的
以上是自己常用的Masonry的約束方式邑茄,和一些注意點(diǎn),在項目中使用Masonry對于純代碼開發(fā)的工程師是非常重要的俊啼,大家一起學(xué)習(xí)肺缕。