1. Auto layout

1.1 NSLayoutConstraint

1.1.1 约束类 ios6.0可用 为了更好的适配各个尺寸

1.1.2 constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:

生成一个约束,也就是给一个视图约束条件,另一个视图也会受到这个约束的影响

参数依次为view1,attr1,=(>=,<=),view2,attr2,multiplier,constant

view1.attr1 = view2.attr2 * multiplier + constant

1.1.3 constraintsWithVisualFormat:options:metrics:views:

俗称 VFT,它能生成一组约束(水平,垂直)

https://www.cnblogs.com/gulong/p/4722806.html

1.1.4 默认生成的约束条件的级别都是最高的1000 (级别范围 0-1000)

1.2 translatesAutoresizingMaskIntoConstraints

1.2.1 UIView的一个属性,

1.2.2 若想约束生效必须设置为YES,此时frame将不会生效

1.3 约束一般一组是4个(上下,左右,宽高),

约束设置多,或者设置少都会出错,此时系统会帮忙处理以保证程序的运行,而且控制台也会打印出具体问题及解决方案。但是如果系统也帮不了你的时候,那就是一个闪退予以反抗。

2. sizeToFit,sizeThatFits,intrinsicContentSize

2.1 sizeToFit  手动调用改变宽高 可重写,需调用父类方法

2.2 sizeThatFits 手动调用获取宽高 可重写,可调用父类方法获取上层更多资源

2.3 intrinsicContentSize 手动调用无意义 可重写,类似默认生成宽高的约束但是级别都不高 <100

@implementation GLLabel

//-(void)sizeToFit{

//    [super sizeToFit];

//}

//

//-(CGSize)sizeThatFits:(CGSize)size{

//    return CGSizeMake(120, 20);

//}

//

- (CGSize)intrinsicContentSize{

    //手动改变后 需要调用invalidateIntrinsicContentSize

    return CGSizeMake(, );

}

@end

3. Masonry

3.1 轻量级的自动布局SDK,采用了链式编程的方式简化了代码量 他不仅支持iOS还支持MAC OS X的开发

可下载代码放入代码中,或直接pod install

最后还是调用constraintWithItem:attribute:relatedBy:

toItem:attribute:multiplier:constant:的方法添加的约束

内部很多枚举都是重写的NSLayoutConstraint的枚举,属于一一对应的

为了配合英语语法有一些增强读法的方法,b看来应该会更舒服一点吧(with,and)

a. make.top.left.right.bottom.offset(20)

b. make.top.left.right.and.bottom.offset(20)

3.2 重要类

MASConstraintMaker     引擎类

MASConstraint          约束抽象类,实现了部分方法

MASViewConstraint      视图约束类,所有方法均已实现

MASCompositeConstraint 组合约束类,内部childConstraints为数组,模型为MASViewConstraint

UIView的分类            View+MASAdditions中,简便我们的调用

3.3 具体使用

3.3.1 demo

[label1 mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.offset(20);

make.top.bottom.right.offset(-50).priority(800);

}];

3.3.2 分析

mas_makeConstraints 为View的分类方法block中会返回约束引擎

make.left 会生成MASViewConstraint对象并被make所持有,并返回该对象

make.left.offset 会将MASViewConstraint的对象的约束constant值该为20

make.right 会生成MASViewConstraint对象并被make所持有,并返回该对象

make.top.bottom 会新生成两个对象(MASViewConstraint对象 & MASCompositeConstraint对象)

MASCompositeConstraint 并且将right和bottom放入childs的数组中

返回MASCompositeConstraint对象

make.top.bottom.right 会新生成一个MASViewConstraint对象,

绑定到MASCompositeConstraint对象上

重新返回MASCompositeConstraint对象

make.top.bottom.right.offset 给MASCompositeConstraint的对象的constant设置值为-50

后续将childs的MASViewConstraint对象都设置-50这个值

make.top.bottom.right.offset(-50).priority(800)  虐

当block执行完之后,引擎make将会执行install装载方法依次执行组合约束的install装载方法后再执行视图约束的install装载方法,最后执行生成约束的方法,至此完毕

4. 番外

4.1 setContentCompressionResistancePriority:forAxis:

默认优先级为750    抗压缩

4.2 setContentHuggingPriority:forAxis:

默认优先级为250    抗拉伸

4.3 云教学中有使用例子

个人信息主页,会员图标紧随个人名字,名字过长会把图标挤到屏幕外

名字label的约束 Compression(默认750)< right(赋值800)<Hugging(重置为900)

Auto Layout Masonry的更多相关文章

  1. Auto Layout深入理解,及masonry简单介绍

    本篇博客是本人在学习自己主动布局过程中对自己主动布局的理解和整理,分三部分介绍,内容可能会有所反复.见谅. 一.autosizing与Auto Layout对照,及Auto Layout简单介绍 1. ...

  2. iOS Auto Layout

    Auto Layout是什么 Auto Layout是一个基于constraint(约束)的布局系统,它根据UI元素之间约束关系来调整UI元素的位置和大小. Auto Layout解决什么问题 更容易 ...

  3. 从 Auto Layout 的布局算法谈性能

    这是使用 ASDK 性能调优系列的第二篇文章,前一篇文章中讲到了如何提升 iOS 应用的渲染性能,你可以点击 这里 了解这部分的内容. http://t.cn/Rc4KbUC 在上一篇文章中,我们提到 ...

  4. 深入理解Auto Layout 第一弹

    本文转载至 http://zhangbuhuai.com/2015/07/16/beginning-auto-layout-part-1/ By 张不坏 2015-07-16 更新日期:2015-07 ...

  5. 有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?

    本文转载至 http://www.cnblogs.com/ios122/p/4832859.html Apple 算是最重视应用开发体验的公司了.从Xib到StoryBoard,从Auto Layou ...

  6. iOS 开发实践之 Auto Layout

    原:http://xuexuefeng.com/autolayout/?utm_source=tuicool 本文是博主 iOS 开发实践系列中的一篇,主要讲述 iOS 中 Auto Layout(自 ...

  7. 【转】有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?

      Apple 算是最重视应用开发体验的公司了.从Xib到StoryBoard,从Auto Layout到Size Class,每一次的更新,都会给iOS应用的开发带来不小的便利.但是,对于绝对多数i ...

  8. Auto Layout压缩阻力及内容吸附讲解

    Auto Layout压缩阻力及内容吸附讲解 本文为投稿文章,作者:梁炜V 在Auto Layout的使用中,有两个很重要的布局概念:Content Compression Resistance 和  ...

  9. 【Auto Layout】Xcode6及以上版本,创建Auto Layout 约束时产生的一些变化【iOS开发教程】

    [#Auto Layout#]Xcode6创建Auto Layout 约束时产生的一些变化     通过两个小Demo来展示下变化: Demo1需求: 为控制器的根视图(图中的“控制器View”)的子 ...

随机推荐

  1. SLAM+语音机器人DIY系列:(八)高阶拓展——2.centos7下部署Django(nginx+uwsgi+django+python3)

    0.安装步骤预览(1)系统默认自带python2.x,所以需要先安装python3.x(2)python2对应pip,python3对应pip3,用源码安装python3后pip3也自动安装了(3)用 ...

  2. Do you have an English name? 你有英文名吗?

    文中提到的所有人名都是虚构的,如有雷同,纯属巧合. 当然,你的洋名儿也可能是德文.法文.意大利文,等々々々. 全球化时代,和老外的交流也多了."高端"的程序员想要进欧美系外企,想要 ...

  3. [转]Node.js 应用:Koa2 使用 JWT 进行鉴权

    本文转自:https://www.cnblogs.com/linxin/p/9491342.html 前言 在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行 ...

  4. 常见的网页图像格式有 ico、jpg、png、gif,说说他们各自的应用场景

    1.ico:一般作为网页的标题上面的图标出现,文件 favicon.ico一般存放在网站根目录 2.jpg:非常适合作为储存像素色彩丰富的图片.例如照片等等 3.png:分为 png-8 以及 png ...

  5. arcgis api 3.x for js 入门开发系列十八风向流动图(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. Ocelot + Consul + Registrator 基于Docker 实现服务发现、服务自动注册

    目录 1. Consul集群搭建 1.1 F&Q Consul官方推荐的host网络模式运行 2. Registrator服务注册工具 2.1 F&Q Registrator悬挂服务 ...

  7. arcgis api 3.x for js 实现克里金插值渲染图不依赖 GP 服务(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  8. 基于Android的模拟点击探索

    前言 压力测试中,一般会用到自动化测试.准备写一个APP,可以记录屏幕上的点击事件,然后通过shell命令来模拟自动执行.shell指令,比较容易实现.那么,关键的一步是获取点击的坐标.对于Andro ...

  9. Linux查看监听端口的脚本测试

    本文是按照lfree的博客(https://www.cnblogs.com/lfree/p/10368332.html)中的内容,进行学习.测试.总结的.有些知识点也是在阅读这篇博文时,发现不了解这方 ...

  10. Delphi中使用ISuperObject解析Json数据

    Java.Php等语言中都有成熟的框架来解析Json数据,可以让我们使用很少的代码就把格式化好的json数据转换成程序可识别的对象或者属性,同时delphi中也有这样的组件来实现此功能,即Isuper ...