闻道丶iOS(大杂烩)iOS DevelopmentiOS Developer

关于Masonry小记

2017-02-23  本文已影响31人  magicL1

Masonry 源码:https://github.com/Masonry/Masonry

Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X。

首先使用Masonry前本文默认读者对AutoLayout熟练使用或者有基本了解,下面看一下xib中对AutoLayout的使用:

上两图中可以看出只要设置相应得局限,控制好父视图与子视图之间的约束关系就能实现需要的需求。

使用:

下图是Masonry支持的一些属性:

以上属性与NSLayoutAttrubute的对照表如下:

其中leading与left trailing与right 在通常情况下是等价的,使用时可以用left和right就好,特殊情况这里不做介绍。

Masonry给我们提供了以下3个方法来实现在视图中约束的添加和改变:

- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;

- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block;

- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;

/*mas_makeConstraints 只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束否则会报错;mas_updateConstraints 针对上面的情况会更新在block中出现的约束不会导致出现两个相同约束的情况;mas_remakeConstraints 则会清除之前的所有约束仅保留最新的约束,三个函数合理利用就可以应对各种情况了*/

需要注意的是添加约束前必须要把view添加到视图上。使用updateConstraints更新的时候必须是makeConstraints里面设置过的约束。

例:让一个view距离父视图superView边距为10

另:mas_equalTo是一个MACRO,比较的是值,equalTo比较的是view。

上一篇下一篇

猜你喜欢

热点阅读