autoresizing:子控件根据父控件变化而变化,父控件与子控件之间建立联系。
autolayout:任何两个控件之间都可建立联系。(参照、约束)
目前两者是对立的,用autolayout需要关闭autoresizing。目前Xcode默认是autolayout模式。UILabel自动布局,只要有位置结束及宽度固定,系统会自动更新高度。此时uilabel边框会自动包住文字。
layoutIfNeed:在代码中对约束进行修改时,可以此方法写在animate动画中。
masonry
- 添加约束:
mas_makeConstraints:只会添加新的约束
mas_remakeConstraints:删除以前所有约束,增加新约束
mas_updateConstraints:将会覆盖以前某些特定约束 - 尺寸约束:make.size.mas_equalTo(100); === make.size.equalTo(@100); //后者100 需要包装。区分mas_EqualTo equalTo
- 位置约束:make.center.mas_equalTo
make . [做什么约束] . [关系:哪个控件] . [系数] . [偏移量]
约束类型:
* 1.尺寸:width、height、size
* 2.边界:left(leading)、right(trailing)、top、bottom
* 3.中心点:center、centerX、centerY
* 4.边界:edges
#define MAS_SHORTHAND //添加这个宏,代码中可省略mas_前缀。
#define MAS_SHORTHAND_GLOBALS //添加这个宏,mas_equalTo 等价于 equalTo
所有代码都不需要增加:mas_
此宏定义必须写在Masonry.h 之前
约束优先级
此功能可用于两个约束冲突时
C距离B底部为10,若此时B隐藏了,需要让C距离A底部为10。这种情形下需要用到约束优先级。
给C添加个新的约束,距离C底部为10,并且设置此约束优先级低于C距离B底部的优先级。
- 当B隐藏时,需要调换两个优先级。
- 将B删除(不建议)
- 将B隐藏,且设置高度0