Masonry

Masonry是一个强大的iOS自动布局框架,采用链式编程API,支持Mac和iOS平台。通过简洁的代码实现复杂的布局,包括设置内边距、约束优先级、约束比例等功能。在使用时,注意要在addSubview之后添加约束,避免约束冲突和缺失。
摘要由CSDN通过智能技术生成

什么是Masonry

        Masonry是一个对系统NSLayoutConstraint进行封装的第三方自动布局框架,采用链式编程的方式提供给开发者API。系统AutoLayout支持的操作,Masonry都支持,相比系统API功能来说,Masonry是有过之而无不及。

        Masonry采取链式编程的方式,代码理解起来清晰易懂,而且写完之后代码量看起来非常少。之前用NSLayoutConstraint写很多代码才能实现的布局,用Masonry最少一行代码就可以搞定。

        Masony是同时支持Mac和ios两个平台的,在这两个平台都可以使用Masonry进行自动布局。在MASUtilities.h中可以看到区分平台的关键字。

//  MASUtilities.h
#if TARGET_OS_IPHONE || TARGET_OS_TV

    #import <UIKit/UIKit.h>
    #define MAS_VIEW UIView
    #define MAS_VIEW_CONTROLLER UIViewController
    #define MASEdgeInsets UIEdgeInsets
#elif TARGET_OS_MAC

    #import <AppKit/AppKit.h>
    #define MAS_VIEW NSView
    #define MASEdgeInsets NSEdgeInsets
#endif

集成方式

Masonry支持CocoaPods,可以直接通过podfile文件进行集成,需要在CocoaPods中添加如下代码即可:

pod 'Masonry'

使用Masonry注意事项

  1. 在使用Masonry添加约束之前,需要在addSubview之后才能使用,否则会导致崩溃
  2. 在添加约束时常见的问题一般有两种:约束冲突和缺少约束。对于这两种问题可以通过调试和log排查

Masonry使用

基础API

mas_makeConstraints()    添加约束
mas_remakeConstraints()    移除之前的约束,重新添加新的约束
mas_updateConstraints()    更新约束

equalTo()    参数是对象类型,一般是视图对象或者mas_width这样的坐标对象
mas_equalTo()    和上面功能相同,参数可以传递基础数据类型对象,可以理解为比上面的API更强大

width()    用来表示宽度,例如代表view的宽度
mas_width()    用来获取宽度的值。和上边的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象的值

Auto Boxing

上面例如equalTo或者width这样的,有时候需要涉及到使用mas_前缀,这在开发中需要注意做区分。

如果在当前类引入#import "Masonry.h"之前,用下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值