Autolayout第三方库Masonry的入门与实践

       在如今的iOS开发中,Autolayout已经是不得不使用了,而且是我们主动的去拥抱Autolayout。使用Autolayout最普遍的方式就是在xib或者storyboard中可视化的添加各种约束,这也是Autolayout入门需要掌握的,关于这部分内容,可以参考《iOS开发——Autolayout的实践与技巧》这篇博客。对于比较简单的App开发,可能使用可视化Autolayout也就足够了。但是如果UI布局稍微复杂多变一点,那么就不得不使用代码了。对于iOS原生的代码自动布局,真的是过于繁琐。所以这里就要来介绍目前广泛使用的第三方库Masonry的使用,入门非常的方便简单。也是一位合格的iOS开发者需要掌握的。博客案例代码上传至 https://github.com/chenyufeng1991/MasonryLearnDemo 。

(1)使用Cocoapods导入Masonry,对于如何使用Cocoapods,请参考《iOS包管理工具Cocoapods的安装与使用》这篇博客。Podfile文件如下:

platform:ios,'8.0'
pod 'Masonry'

(2)先对Masonry中的内容做一个简单的介绍:

Masonry中有三种添加约束的方法:

- (NSArray *)mas_makeConstraint:(void(^)(MASConstraintMaker *))block;

- (NSArray *)mas_updateConstraint:(void(^)(MASConstraintMaker *))block;

- (NSArray *)mas_remakeConstraint:(void(^)(MASConstraintMaker *))block;

mas_makeConstraint:只负责新增约束,初次设置约束使用;

mas_updateConstraint:更新block中出现的约束,如果找不到该约束,会新增约束。

mas_remakeConstraint:清除之前的所有约束,仅保留最新的约束。


(3)equalTo和mas_equalTo的区别

其实mas_equalTo是一个宏,源码中是这样定义的:

 #define mas_equalTo(...)                 equalTo(MASBoxValue((__VA_ARGS__)))
 #define mas_greaterThanOrEqualTo(...)    greaterThanOrEqualTo(MASBoxValue((__VA_ARGS__)))
 #define mas_lessThanOrEqualTo(...)       lessThanOrEqualTo(MASBoxValue((__VA_ARGS__)))

 #define mas_offset(...)                  valueOffset(MASBoxValue((__VA_ARGS__)))


同时,这里涉及到两个简便写法,Masonry提供了不加mas_前缀的方法,只需要定义两个宏:

MAS_SHORTHAND宏:定义了MAS_SHORTHAND宏之后,就可以使用UIView,NSArray中不带mas_前缀的makeConstraint,updateConstraint,remakeConstraint方法,以及UIView中不带mas_前缀的Attribute。

MAS_SHORTHAND_GLOBALS:直接对equalTo传入基础类型,Masonry自动转化为NSValue对象。


(4)比例系数与常数系数

multipliedBy(0.5)可以用来设置比例系数。

Masonry有四种设置Constant的方法:

- (MASConstraint * (^)(MASEdgeInsets insets))insets;
- (MASConstraint * (^)(CGSize offset))sizeOffset;
- (MASConstraint * (^)(CGPoint offset))centerOffset;
- (MASConstraint * (^)(CGFloat offset))offset;
insets方法可以同时设置top,left,bottom,right,接收MASEdgeInsets类型,也就是UiEdgeInsets类型,使用UIEdgeInetMake方法设置。

sizeOffset方法设置width,height,接收CGSize类型,使用CGSizeMake方法设置。

centerOffset方法设置centerX(X轴中心),centerY(Y轴中心)。

offset方法可以设置所有的偏移常量。

(5)对于一个约束,实际表示的是不等或者相等关系:

aView.Leading = 1.0 * bView.Trailing + 10;

其中:

aView :Item1

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值