本篇文章主要从【Masonry 使用】学习总结。
在「时间 & 知识 」有限内,总结的文章难免有「未全、不足 」的地方,还望各位好友指出,以提高文章质量。
目录:
- Masonry简明介绍
- 导入Masonry框架
- Masonry 常用API & 特性
1.基础API
2.4种设置常量的方法
3.简化前缀的宏定义 & 简写
4.更新约束和布局- Masonry常用方法
1.基本使用:设置内边距
2.简单动画:priority优先级
3.更新约束 mas_updateConstraints
4.重写约束 mas_remakeConstraints
5.比例使用 multipliedBy
6.大于等于和小于等于某个值的约束- Demo小样 重要的部分代码中都有相应的注解和文字打印,运行程序可以很直观的表现 Star
在「时间 & 知识 」有限内,总结的文章难免有「未全、不足 」的地方,还望各位好友指出,以提高文章质量@jianshu - 白开水ln。
Masonry简明介绍
Masonry是一个轻量级的布局框架,适用于iOS以及OS X。它用简洁的语法对官方的AutoLayout进行了封装。 Masonry有它自己的一套框架用来描述NSLayoutConstraints布局的DSL,提高了约束代码的简洁性与可读性。
导入Masonry框架
使用
Cocoapods
来导入框架,在使用到该框架的文件中添加主头文件:#import <Masonry/Masonry.h>
。使用直接拖拽的方式拉入框架文件夹,在使用到该框架的文件中添加主头文件:
#import "Masonry.h"
。
Masonry 常用API & 特性
基础API
|
|
Constant:Masonry提供了4种设置constant的方法
|
|
注解:
insets
: 用来设置left, right, top, bottom。接受MASEdgeInsets类型值sizeOffset
: 用来设置width, height。接受CGSize类型的值centerOffset
: 用来设置centerX, centerY。接受CGPoint类型的值offset
: 可以用来设置所有的东西。接受CGFloat类型的值
简化前缀的宏定义 & 简写
|
|
注解:这两个宏如果想有效使用,必须要在添加Masonry头文件之前导入进去。
|
|
更新约束和布局
|
|
-
- (void)updateConstraintsIfNeeded
调用此方法,如果有标记为需要重新布局的约束,则立即进行重新布局,内部会调用updateConstraints方法。- (void)updateConstraints
重写此方法,内部实现自定义布局过程。- (BOOL)needsUpdateConstraints
当前是否需要重新布局,内部会判断当前有没有被标记的约束。- (void)setNeedsUpdateConstraints
标记需要进行重新布局。
关于UIView重新布局相关的API,主要用以下三个API:
- (void)setNeedsLayout
标记为需要重新布局。- (void)layoutIfNeeded
查看当前视图是否被标记需要重新布局,有则在内部调用layoutSubviews
方法进行重新布局。- (void)layoutSubviews
重写当前方法,在内部完成重新布局操作。
|
|
Masonry常用方法
基本使用:设置内边距
效果图往下看:创建一个View,左右上下空出10个像素
|
|
简单动画:priority优先级
效果图往下看:优先级约束一般放在一个控件约束的最后面
|
|
注解:
这里的三个View
的宽度是根据约束自动推断设置的,对黄色的View
设置了一个与红色View
有关的priority(250)
的优先级,
它同时有对蓝色View有个最高的优先级约束(make.left.mas_equalTo(self.blueView.mas_right).with.offset(40);)
。
当点击屏幕是,我将蓝色View
移除,此时第二优先级就是生效。
更新约束 mas_updateConstraints
效果图往下看:创建一个按钮,约束好它的位置(居中,宽高等于100且小于屏幕宽高值)。
每次点击一次这个按钮,其宽高将增大一定的倍数,最终其宽高等于屏幕宽高时将不再变化。
|
|
重写约束 mas_remakeConstraints
创建一个按钮,约束好其位置(与屏幕上左右的距离为0,与屏幕底部距离为350),点击按钮后全屏展现(即与屏幕底部距离为0)。
|
|
注解:
mas_remakeConstraints
和mas_updateConstraints
的区别在于
前者重新对视图进行了约束(抛弃了之前的约束),后者是更新约束条件(保留未更新的约束),
如:这次更新了对 height
的约束,其他对X&Y
以及宽的约束不变)。
比例使用 multipliedBy
使用multipliedBy
必须是对同一个控件本身,如果修改成相对于其它控件会出导致Crash
。
|
|
大于等于和小于等于某个值的约束
参考:http://www.jianshu.com/p/99c418cd11f7
期待
- 如果在阅读过程中遇到 error || new ideas,希望你能 messages 我,我会及时改正谢谢。
- 点击右上角的 喜欢 和 订阅Rss 按钮,可以收藏本仓库,并在 Demo 更新时收到邮件通知。