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仅仅是为了提高可读性,可有可无

0 0
原创粉丝点击