`

ios:Masonry

    博客分类:
  • ios
ios 
阅读更多
https://github.com/SnapKit/Masonry

pod 'Masonry'

- (void)viewDidLoad {
    [super viewDidLoad];

    // 使用 Masonry 布局,基本可以抛弃 CGRectMake 了,直接初始化即可。
    UIView *view = [[UIView alloc] init];

    view.backgroundColor = [UIColor darkGrayColor];

    // 在做布局之前,一定要先将 view 添加到 superview 上,否则会报错。
    [self.view addSubview:view];

    // mas_makeConstraints 就是 Masonry 的 autolayout 添加函数,将所需的约束添加到block中就行。
    [view mas_makeConstraints:^(MASConstraintMaker *make) {
        // 设置居中
        make.center.equalTo(self.view);
        // 设置宽度为200
        make.width.equalTo(@200);
        // 设置高度为200
        make.height.mas_equalTo(200);
    }];
}

//三个并排的view
- (void)viewDidLoad {
    [super viewDidLoad];

    // 初始化视图
    UIView *view1 = [[UIView alloc] init];
    view1.backgroundColor = [UIColor redColor];
    [self.view addSubview:view1];

    UIView *view2 = [[UIView alloc] init];
    view2.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:view2];

    UIView *view3 = [[UIView alloc] init];
    view3.backgroundColor = [UIColor greenColor];
    [self.view addSubview:view3];

    // 布局视图
    [view1 mas_makeConstraints:^(MASConstraintMaker *make) {
        // 设置中心点
        make.centerY.mas_equalTo(self.view);
        // 设置左侧距离父视图10像素
        make.left.equalTo(self.view).offset(10);
        // 设置右侧距离和view2的左侧相距10像素
        make.right.equalTo(view2.mas_left).offset(-10);
        // 设置高度
        make.height.mas_equalTo(200);
        // 设置宽度和view2以及view3相等
        make.width.equalTo(@[view2, view3]);
    }];

    [view2 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(self.view);
        make.height.mas_equalTo(view1);
        make.width.equalTo(@[view1, view3]);
    }];

    [view3 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(self.view);
        make.left.equalTo(view2.mas_right).offset(10);
        make.right.equalTo(self.view).offset(-10);
        make.height.mas_equalTo(view1);
        make.width.equalTo(@[view1, view2]);
    }];

}

Masonry 的注意项

1、使用mas_makeConstraints方法的元素必须事先添加到父元素的中,例如:[self.view addSubview:view];

2、mas_equalTo和equalTo区别:mas_equalTo比equalTo多了类型转换操作,一般来说,大多数时候两个方法都是通用的,但是对于数值元素使用mas_equalTo。对于对象或是多个属性的处理,使用equalTo。特别是多个属性时,必须使用equalTo,例如:make.left.and.right.equalTo(self.view);。

3、注意方法with和and,这两个方法其实没有做任何操作,方法只是返回对象本身,这个方法的左右完全是为了方法写的时候的可读性 ,如下两行代码是完全一样的,但是明显加了and方法的语句可读 性更高点。

1.设置间距后用offset添加偏移量
make.left.equalTo(self.view.mas_left).offset(0);

2.设置宽的比例
make.width.equalTo(self.view.mas_width).multipliedBy(0.5)

3.设置参照的视图等宽高
make.width.and.height.equalTo(self.imageView);

4.设置内边距
make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 10, 10));
分享到:
评论

相关推荐

    IOS Masonry-master

    【标题】"IOS Masonry-master" 是一个针对iOS开发的屏幕适配库,它提供了强大的自动布局功能。这个开源项目让开发者能够更加灵活、高效地处理界面元素的约束,简化了Auto Layout的使用过程。 【描述】在iOS应用开发...

    ios-Masonry Cell 动态高度 自动布局 Autolayout.zip

    `iOS-Masonry Cell 动态高度 自动布局 Autolayout.zip`这个压缩包中包含了一个名为`MASCellTest`的项目,它展示了如何利用Masonry库来实现UITableViewCell的动态高度计算。Masonry是一个基于AutoLayout的轻量级框架...

    ios demo,Masonry的使用,一个在ios中可以替代autoLayout的布局,代码控制,弹性高

    Masonry是一个流行的第三方库,它为iOS开发者提供了更简洁、灵活的方式来实现自动布局,尤其适合代码控件的开发者。 Masonry是由Jason Clemons创建的,它的核心思想是使用链式语法,使得设置约束的过程更加清晰和...

    ios-Masonry对TableViewCell进行自动布局.zip

    本项目中的"ios-Masonry对TableViewCell进行自动布局.zip"是一个示例,演示了如何使用Masonry在TableViewCell中实现点击展开和折叠的效果,这在列表展示中非常常见,例如在新闻详情、层级结构数据展示等场景。...

    ios-根据Masonry自动布局Cell自适应高度.zip

    这个“ios-根据Masonry自动布局Cell自适应高度.zip”文件提供了一个使用Masonry库来实现这个功能的例子。Masonry是一款强大的自动布局库,它使得在Swift或Objective-C中进行自动布局变得更为简洁。 Masonry的核心...

    iOS Masonry以纯代码的方式计算cell的高度

    在iOS开发中,Masonry是一个流行的布局库,它为Auto Layout提供了一种更简洁、更易读的语法,特别适合于纯代码的界面构建。本文将深入探讨如何使用Masonry来以纯代码的方式计算UITableViewCell的高度。 首先,我们...

    ios-Masonry版流水标签.zip

    Masonry布局动态标签,View,cell中自适应,不需要计算高度。 介绍:https://www.jianshu.com/p/6fd8449ac2f8; demo地址:https://github.com/liuxinixn/LXTagsView

    ios-Masonry系列使用场景总结.zip

    在iOS开发中,Masonry是一款强大的自动布局库,它提供了简洁的语法,使得开发者能够更加高效地处理Auto Layout。这个“ios-Masonry系列使用场景总结.zip”文件包含了关于Masonry的详细教程和一个名为“MasonryDemo”...

    iOS使用masonry自适应布局

    在iOS开发中,Masonry是一个强大的自动布局库,它提供了简洁的语法来创建Auto Layout约束,使得布局工作更加高效和直观。本知识点将深入探讨如何使用Masonry来实现cell的高度自适应,以及如何构建一个简易的聊天界面...

    Masonry的基本使用

    Masonry 是一个强大的 iOS 开发框架,主要用于 Auto Layout 的编程接口。它是由 SnapKit 提供支持,是一个基于 Objective-C 的库,但也适用于 Swift 项目。Masonry 的主要优点在于其简洁、灵活的语法,使开发者能够...

    Masonry-master

    《Masonry:强大的iOS AutoLayout库解析》 在iOS应用开发中,AutoLayout是苹果提供的一种布局机制,它使得开发者可以构建适应不同屏幕尺寸和设备方向的用户界面。然而,AutoLayout的原生API在使用时可能会显得复杂...

    iOS开发用Masonry 适配Demo

    在iOS开发中,Masonry是一个强大的自动布局库,它提供了链式语法,使得开发者能够更加简洁、直观地处理视图的约束布局。本Demo旨在展示如何利用Masonry进行界面适配,让开发者能够快速上手并高效地实现复杂的界面...

    ios-HowToUseMasonry.zip

    《iOS开发:Masonry框架的使用指南》 在iOS应用开发中,布局是构建用户界面的关键环节。Masonry是一款强大的自动布局库,它基于NSLayoutConstraint,提供了简洁的API,使得开发者能够更方便地进行界面布局。本文将...

    ios-Masonry和UITableViewCell自动计算行高 2 修改版.zip

    根据大家反映之前上传的版本连接http://code.cocoachina.com/view/133241是在Xcode 7.2下创建的,年前公司忙着赶项目,没来的及处理,Xcode 8.0以后,运行这个连接http://code.cocoachina.com/view/133241下载的代码,会...

    iOS使用Masonry时进行动画操作方法

    最近稍微闲了一些,决定把之前漏掉的知识再补充一下,然后发现在使用Masonry的时候动画怎么实现呢?于是经过练习和查找相关方法,终于找到了正确的做法,希望能够对有需要的人提供一些帮助。 正文 简单来说Masonry的...

    ios-Masonry 自动布局.zip

    在iOS开发中,Masonry是一款强大的自动布局库,它提供了简洁、链式语法来设置视图的约束,使得布局代码更加清晰易读。本压缩包包含的资源将深入讲解Masonry在不同场景下的应用,包括基本用法、与UIScrollView的结合...

    iOS masonry

    总的来说,Masonry作为iOS开发中的一个利器,能够帮助开发者更高效地利用Auto Layout,让布局工作变得轻松而优雅。它的链式语法、简洁的API和强大的功能,使得Masonry在iOS社区中广受欢迎,成为许多开发者首选的自动...

    MasonryIOS自动布局框架

    Masonry 是一个强大的 iOS 自动布局库,它基于苹果的 Auto Layout API,提供了一套简洁、链式语法的接口,让开发者能够更加高效地处理视图的约束布局问题。Masonry 的设计理念是使得代码更加清晰易读,同时提高布局...

    照着Masonry敲了遍代码

    Masonry 是一个流行的 iOS 开发框架,用于进行自动布局(Auto Layout)的代码编写。它提供了简洁、链式语法,让开发者能更高效地管理视图的约束,从而实现界面的自适应布局。在这个“照着Masonry敲了遍代码”的项目...

    IOS Masonry+MVC+AFNetworking动态获取列表

    在iOS应用开发中,"IOS Masonry+MVC+AFNetworking动态获取列表"是一个常见的应用场景,主要用于构建数据驱动的界面,尤其是从网络上获取并显示数据。以下将详细讲解这三个核心概念及其组合使用的方式。 **Masonry**...

Global site tag (gtag.js) - Google Analytics