Masonry第三方代码约束
#import "RootViewController.h"
#import "Masonry.h" @interface RootViewController () @end @implementation RootViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view. #pragma mark - label // 添加约束,不需要设置frame
UILabel *label = [UILabel new];
label.backgroundColor = [UIColor redColor]; // 添加到父视图上,视图添加完成后才能进行布局
[self.view addSubview:label]; // 布局,显现布局方法
[label mas_makeConstraints:^(MASConstraintMaker *make) { // 距离上面50
/*
make:相当于要布局的视图
equalTo:参照的视图对象,如果参照视图是self.view,可以不设置参照视图的属性
offset:距离数值
*/
make.top.equalTo(self.view).offset(); // 距离左边100
make.left.equalTo(self.view).offset(); // 距离右边100
make.right.offset(-); // 距离下面500
make.bottom.offset(-); }]; #pragma mark - label1 // 添加约束,不需要设置frame
UILabel *label1 = [UILabel new];
label1.backgroundColor = [UIColor greenColor]; // 添加到父视图上,视图添加完成后才能进行布局
[self.view addSubview:label1]; // 先布局参照视图,否则约束容易丢失
[label1 mas_makeConstraints:^(MASConstraintMaker *make) { // 和label左边一致
// equalTo(自定义的视图),需要设置视图的属性,如果数值为0,可以不写offset()
make.leading.equalTo(label.mas_leading); // 和label右边一致
make.trailing.equalTo(label.mas_trailing); // 上边距离label 50
make.top.equalTo(label.mas_bottom).offset(); // 高度60
make.height.mas_equalTo(); }]; #pragma mark - label2 UILabel *label2 = [[UILabel alloc] init];
label2.backgroundColor = [UIColor orangeColor];
[self.view addSubview:label2]; // [label2 mas_makeConstraints:^(MASConstraintMaker *make) {
//
// make.left.offset(100);
// make.right.offset(-100);
// make.top.offset(400);
// make.bottom.offset(-100);
// }]; // 设置距离参照视图的内边距(上左下右)
UIEdgeInsets padding = UIEdgeInsetsMake(, , , ); [label2 mas_makeConstraints:^(MASConstraintMaker *make) { // 设置约束视图的边界距离self.view的边界值
// make.edges.equalTo(self.view).insets(padding);
make.edges.insets(padding);
}]; #pragma mark - label3 UILabel *label3 = [[UILabel alloc] init];
label3.backgroundColor = [UIColor purpleColor];
[self.view addSubview:label3]; [label3 mas_makeConstraints:^(MASConstraintMaker *make) { // 设置中心点一致
make.center.equalTo(label2); // 设置大小
// make.width = label2.width - 40
// make.height = label2.height + 60
make.size.equalTo(label2).sizeOffset(CGSizeMake(-, )); }];
} @end
Masonry第三方代码约束的更多相关文章
- 代码:Masonry 第三方框架
必备宏使用前提: //define this constant if you want to use Masonry without the 'mas_' prefix #define MAS_SHO ...
- Masonry控制台打印约束冲突问题解决
不知道你是不是视图的布局也是用的第三方Masonry,在使用中是不是也遇到了控制台约束冲突的警告打印,看下图: 从输出的信息可以知道,有的控件的约束明显重复了设置,所以指出了是哪个控件,重复设置了哪些 ...
- Swift中的Masonry第三方库——SnapKit
在OC开发时我常用一个名叫Masonry的第三方Autolayout库,在转Swift后发现虽然Swift可以混编OC,但总感觉有些麻烦,在Github上发现了这个叫做SnapKit的第三方库,发现使 ...
- 如何安全修改cocoapods上的第三方代码
其实搞java的都知道maven管理,解决第三方代码修改的办法就是架一个服务器,把这些修改的库放在这里,然后再maven里配置哪些需要用本地仓库的.其实cocoapods也可以做本地包管理: 大致方法 ...
- 使用xcodeproj 动态插入第三方代码
# 为什么这么做? 现在有这么一个使用场景,基线能生成项目A,项目B,项目C...如果只有项目A中使用SDK_A,其他项目都不使用,这时候就需要对基线进行差分,只有当我切换到项目A时,才插入SDK_A ...
- 【原】iOS学习之Masonry第三方约束
1.Masonry概述 目前最流行的Autolayout第三方框架 用优雅的代码方式编写Autolayout 省去了苹果官方恶心的Autolayout代码 大大提高了开发效率 框架地址:https:/ ...
- iOS-原生纯代码约束总结(二)之 AutoLayout
一,概述 AutoLayout相比AutoResizing更加实用,是可以完全替代AutoResizing的一种自动布局方式.而在使用AutoLayout前,我们必须理解一个属性,那就是transla ...
- Masonry remake更新约束
前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万 ...
- Masonry 动画更新约束
前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万 ...
随机推荐
- 轻量级IOC框架:Ninject (下)
一,创建依赖链(Chains of Dependency) 当我们向Ninject请求创建一个类型时,Ninject会去检查该类型和其他类型之间的耦合关系.如果有额外的依赖,Ninject也会解析它们 ...
- jsp,OGNL调用后台Action的某方法
用%{}可取出valueStack中的Action,可直接调用其方法. %{testa('key')} 即可调用到action的testa(String s) 方法 但这些都需要结合struts2的标 ...
- sqlserver -- 学习笔记(六)日期格式转换
忘了这篇是从哪里看到,然后复制保存下来,感谢原创的分享~ ) ::08 ),'-',''),' ',''),':','') ),'/','-') ) , ) ) , ) ) , ) ) , ) ) , ...
- [Node.js] OAuth 2 和 passport框架
原文地址:http://www.moye.me/?p=592 OAuth是什么 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列 ...
- Java泛型数组
文章来自http://blog.csdn.net/orzlzro/article/details/7017435 Java 不支持泛型数组.也就是说, List<String>[] ls ...
- Blocked Process Report
当同个对象上有互斥的锁存在时,查询需要等待很长时间,我们是否可以收到来自SQL Server提醒?答案是可以的,做法非常简单,因为SQL Server为你提供了称为Blocked Process Re ...
- CMD魔法堂:获取进程路径和PID值的方法集
一.前言 在开发发布更更新工具——更新Weblogic应用模块时,了解到更新Weblogic应用需要先关闭Weblogic应用窗口然后是清缓存.更新应用文件,最后再重启Weblogic应用窗口. ...
- Gradle学习系列之二——创建Task的多种方法
在本系列的上篇文章中,我们讲到了Gradle入门,在本篇文章中我们将讲到创建Task的多种方法. 请通过以下方式下载本系列文章的Github示例代码: git clone https://github ...
- 44个 Javascript 变态题解析 (上\下)
第1题 ["1", "2", "3"].map(parseInt) 知识点: Array/map Number/parseInt JavaS ...
- 点餐系统web版功能需求
餐厅到店点餐系统需求分析 (版本v1.0.0) 成文信息 主题词: 需求分析 作 者: 14商软ETC 文档类别: 审 核: 批 准: 文档性 ...