美文网首页
Masonry适配的简单使用

Masonry适配的简单使用

作者: 小小小Lucky | 来源:发表于2019-07-23 14:16 被阅读0次

一.Masonry是什么:

答:是一个很好的三方,用来做适配的

Masonry是ios中用代码实现自动布局的一个框架,使用起来特别方便,主要有mas_makeConstraints(添加约束),mas_updateConstraints(更新约束),mas_remakeConstraints(移除约束要谨慎,防止view的fram缺东西)3个方法。

二.怎么使用Masonry

1.导入框架:a.直接拷贝过去 b.用cocospod:pod 'Masonry', '~> 1.0.1'

2.导入头文件

#define MAS_SHORTHAND

#define MAS_SHORTHAND_GLOBALS//加上这两个宏就不需要考虑父控件了

#import "Masonry.h"

使用技巧:引入下面2个宏,就不需要加mas_前缀了。

//define this constant if you want touse Masonrywithout the'mas_' prefix

#define MAS_SHORTHAND

//define this constant if you want to enable auto-boxing for default syntax

#define MAS_SHORTHAND_GLOBALS

Shorthand(12月7日新增)

在写代码的时候,可能你会感觉有的东西要加mas_前缀,有的东西又不用加,代码风格不统一,而且加mas_前缀还麻烦。

前面介绍过加mas_前缀主要是在扩展系统类的时候为了避免与原有类冲突,这是Apple推荐的做法。不过目前来说,即使不加mas_前缀,也不会有什么问题。所以Masonry提供了不加mas_前缀的方法,只需要你定义几个宏即可。

MAS_SHORTHAND

定义MAS_SHORTHAND宏之后。可以使用UIView,NSArray中不带mas_前缀的makeConstraints,updateConstraints,remakeConstraints。以及UIView中不带mas_前缀的Attribute。

MAS_SHORTHAND_GLOBALS

默认的equalTo方法只接受id类型的对象。有时候我们想传入一个CGFloat, CGSize, UIEdgeInsets等。还需要将其转化成NSValue对象,比较麻烦。Masonry也考虑到了这种情况。只需要定义MAS_SHORTHAND_GLOBALS宏。就可以直接对equalTo传入基础类型。Masonry自动转化成NSValue对象

3.添加约束

 [confirmPayment mas_makeConstraints:^(MASConstraintMaker *make) {

}];

三.举例说明

1.基本使用(一个控件的布局)

  __weak typeof (self) weakSelf = self;//防止循环使用

 [confirmPayment mas_makeConstraints:^(MASConstraintMaker *make) {

    make.top.equalTo(weakSelf.view).with.offset(10);//距离上面10px

    make.left.equalTo(weakSelf.view).with.offset(10);//距离左边10px

    make.bottom.equalTo(weakSelf.view).with.offset(-10);//距离下边10px

    make.right.equalTo(weakSelf.view).with.offset(-10); //距离右边10px

    make.center.equalTo(weakSelf.view);//位于该父视图的中心

    make.size.mas_equalTo(CGSizeMake(150, 60));//设置这个控件的大小

    make.edges.mas_offset(UIEdgeInsetsMake(100, 10, 100, 10));//距离上左下右各为10px

 }];

当导入宏

#define MAS_SHORTHAND

#define MAS_SHORTHAND_GLOBALS//加上这两个宏就不需要考虑父控件了

make.top.equalTo(weakSelf.view).with.offset(10);//距离上面10px

等同于

make.top.equalTo(10)//距离上面10px

2.多个控件(兄弟控件的布局)

       UIView *view2 = [[UILabel alloc]init];

        view2.backgroundColor = [UIColor yellowColor];

        [self.view addSubview:view2];

        [view2 mas_makeConstraints:^(MASConstraintMaker *make) {

                make.size.mas_equalTo(CGSizeMake(100, 100));

                make.centerX.equalTo(view1);//view2跟view1的中心X对齐

                make.top.equalTo(view1.mas_bottom).with.offset(20);//view2距离view1的下面10px

            }];

3 让一个蓝色view的内边距为50,点击屏幕后内边距变为100,具体实现如下(2中写法):

[blueView mas_makeConstraints:^(MASConstraintMaker *make) {

        第一种写法

 make.left.top.equalTo(self.view).offset(20);

make.bottom.right.equalTo(self.view).offset(-20);

 第二种写法

make.edges.insets(UIEdgeInsetsMake(50, 50, 50, 50));

    }];

 点击屏幕后更新约束代码如下:

[blueView mas_updateConstraints:^(MASConstraintMaker *make) {

        第一种写法

make.top.left.equalTo(self.view).offset(100);

make.bottom.right.equalTo(self.view).offset(-100);

 第二种写法

make.edges.insets(UIEdgeInsetsMake(100, 100, 100, 100));

    }];

4   蓝色view距离顶端100,距离左右各20,高度50,黑色view和蓝色view右端对其,黑色view顶端距离蓝色view底端20,并且宽度是蓝色view的一半,截图和代码如下(相对于父控件的约束可以省略):

[blueView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.offset(100);

make.left.offset(20);

make.right.offset(-20);

make.height.offset(50);

    }];

[blankView mas_makeConstraints:^(MASConstraintMaker *make) {

make.right.equalTo(blueView);

make.height.equalTo(blueView);

make.top.equalTo(blueView.mas_bottom).offset(10);

make.width.equalTo(blueView).multipliedBy(0.5);

    }];

相关文章

  • Masonry适配的简单使用

    一.Masonry是什么: 答:是一个很好的三方,用来做适配的 Masonry是ios中用代码实现自动布局的一个框...

  • Autolayout、VFL、Masonry

    适配 VFL语言 Masonry 代码实现Autolayout VFL代码 Masonry使用 总结 使用代码实现...

  • webview使用masonry简单适配iPhone

    现在做的一个iOS的webApp,使用WKWebView进行使用。但在适配是,之前使用autoresizing进行...

  • iOS 比masonry更简单的适配(比例适配)

    前言 众所周知,masonry是基于autolayout的适配,使用起来还是相对来说比较简单的。但是由于本人更倾向...

  • Masonry学习理解

    iOS中进行屏幕适配,使用的是AutoLayout。在纯代码中可以使用第三方Masonry添加约束进行适配,而使用...

  • iOS bottomView SafeArea适配

    底部安全域适配,结合Masonry进行配置跟简单快捷 github链接:DSSafeAreaDemo[https:...

  • Masonry源码阅读

    在项目中使用Masonry让我们做屏幕适配变得简单,下面来通过源码了解下它。 一、点链式语法怎么实现的 1> .语...

  • 版本适配

    屏幕适配 代码适配 Masonry UIView+AutoLayout 可视化适配 autoLayout 系统适配...

  • Masonry

    Masonry适配 常用属性含义(View+MASShorthandAdditions.h) Masonry NS...

  • SDAutoLayout 适配

    以前工程里使用的都Masonry 适配的, 在工程中使用Layout比较少, 网上也很多关于SDAutoLayou...

网友评论

      本文标题:Masonry适配的简单使用

      本文链接:https://www.haomeiwen.com/subject/wziolctx.html