Masonry框架基本使用方法
来源:互联网 发布:linux图灵书籍 编辑:程序博客网 时间:2024/05/16 18:33
iPhone-iPhone3GS:window的size固定为(320,480),我们只需要简单计算一下相对位置就好。
iPhone4-iPhone4S:苹果推出了retina屏,但是对于开发人员并没有改变太多,window的size同样没有变化。
iPhone5-iPhone5S:window的size变为(320,568),苹果推出了autoresizingMask适配屏幕。
iPhone6至今:window的width也发生了变化,autoresizingMask不能更好的适配各种各样的屏幕尺寸,随之苹果推出了autolayout来支持复杂的适配。
我们平时总是在xib或storyboard里轻松的添加控件的约束,但是使用代码添加约束是一件非常痛苦的事情。虽然苹果推出了VFL语言简化了代码添加约束的复杂性,但是随之而来的缺点也暴露出来:约束内容使用字符串在编写过程中容易出错,约束功能局限,而且也并不是简化了太多。
Masonry是目前最流行的AutoLayout框架,属于轻量级布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了,具有更高的可读性。可以方便快捷的使用代码添加控件的约束,下面简单介绍一下这个三方框架的使用方法:
配置
点击该链接 https://github.com/SnapKit/Masonry.git 下载
将Masonry文件包拖入项目中,删除包内自带的info.plist文件
demo中对Masonry的引用在.pch文件中
使用Masonry不需要设置约束控件的translatesAutoresizingMaskIntoConstraints属性
简单实现
1.约束控件大小为100x100、位置为父控件的中心点
[blueView mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(100, 100)); make.center.mas_equalTo(self.view);}];
也可以分别约束控件的宽和高、中心点的位置
[blueView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(100); make.height.mas_equalTo(100); make.centerX.mas_equalTo(self.view); make.centerY.mas_equalTo(self.view);}];
2.约束控件的大小为父控件的一半、约束控件在父控件的右上角,距离父控件右边和顶部均为20
[blueView mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(self.view).multipliedBy(0.5); make.right.mas_equalTo(self.view.mas_right).with.offset(-20); make.top.mas_equalTo(self.view.mas_top).with.offset(20);}];
3.约束控件距离父控件四周距离均为50
[blueView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.view).offset(50); make.right.mas_equalTo(self.view).offset(-50); make.top.mas_equalTo(self.view).offset(50); make.bottom.mas_equalTo(self.view).offset(-50);}];
可以简化为
[blueView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.mas_equalTo(self.view).insets(UIEdgeInsetsMake(50, 50, 50, 50));}];
4.两个控件互相约束
[blueView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.view.mas_left).offset(20); make.right.mas_equalTo(redView.mas_left).offset(-20); make.bottom.mas_equalTo(self.view.mas_bottom).offset(-20); make.height.mas_equalTo(50);}];[redView mas_makeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(self.view.mas_right).offset(-20); make.bottom.mas_equalTo(blueView.mas_bottom); make.height.mas_equalTo(blueView.mas_height); make.width.mas_equalTo(blueView.mas_width);}];
总结
约束的类型:
- 尺寸:width、height、size
- 边界:left、leading、right、training、top、bottom
- 中心点:center、centerX、centerY
- 边界:deges
mas_equalTo 和 equalTo 区别
- mas_equalTo 对参数进行包装
- equalTo 不会对参数进行包装
mas_width 和 width 区别
- width是make对象的一个属性,对宽度进行约束
- mas_width是一个属性值,当做mas_equalTo的参数,表示某个控件的宽度属性
with和and仅仅是为了提高可读性,可有可无
- Masonry框架基本使用方法
- Masonry的基本使用方法
- Masonry框架的基本使用
- 第三方框架Masonry的基本使用
- Masonry 使用方法
- Tensorflow框架基本使用方法
- Masonry框架
- [iOS]iOS AutoLayout框架Masonry介绍及其基本使用
- Volley框架的基本使用方法
- Volley框架的基本使用方法
- XUtils3框架的基本使用方法
- 8.Masonry的使用方法
- Masonry的使用方法
- masonry的基本用法
- Masonry的基本使用
- Masonry基本用法
- Masonry基本用法
- Masonry的基本使用
- 4Sum
- java中callback回调机制解析
- 122. Best Time to Buy and Sell Stock II
- Jenkins+Maven+SVN快速搭建持续集成环境(转)
- 找出规律快速实现双螺旋矩阵
- Masonry框架基本使用方法
- Java中的final关键字解析
- sql中的日期比较(年,月,日)
- php三目运算的问题
- Android绘图机制(一)--屏幕尺寸信息
- 父元素使用opacity将子元素都变透明了的解决方案
- 算法积累-跳台阶问题
- C 编程语言走上下坡路了吗?
- 正则表达式:手机、邮箱、IP、日期