Autolayout学习(1)-了解Autoreszing
1. 为什么要有Autoreszing?
在Xcode6之前,如果定义了下面的一个布局,同时运行在不同尺寸设备下会显示不同的效果。

(iPhone6-4.7inch)

(iPhone5s-4inch)
可以看到,我们在4.7inch下的iPhone6上定义的布局跑在4inch下的iPhone5s上面完全错位了。为了解决诸如此类问题,当时苹果推出了autoreszing。
2. 如何使用Autoreszing?
很简单,看上图,我们的目的就是要求屏幕的四个角上的矩形框不管在任何情况下都贴紧屏幕。可以通过在storyboard中设置下列参数解决此问题。
选择storyboard上的第一个View,再选择右上角的尺子图标,点击Autoreszing右侧框中上面和左面的红线

然后选择第二个View,点击Autoreszing右侧框中上面和右面的红线:

依此类推,再选择第三个View,点击Autoreszing右侧框中下面和左面的红线,
依此类推,再选择第四个View,点击Autoreszing右侧框中下面和右面的红线:
全部操作完成后,再将该程序运行到4inch的iPhone5s设备上:

可以看到,这个时候四个矩形View都紧紧的贴在屏幕的四个角上。事实上,经过了上面的处理后,该程序运行在任何设备上的效果都会保持一致,这样就实现了我们想要的效果。
那中间的两条线有什么作用呢?再看下一个例子:

如图,我们在一个绿色的View(200*200)里面添加了一个紫色的View(100*100),现在我们有一个新的需求:当绿色的View的宽度或高度发生改变时,紫色View的宽度和高度也要跟随绿色View变化而变化。按照我们现有的做法肯定是不行的。我们将绿色View的View的尺寸修改为300*300;

很明显,绿色View的尺寸修改了,紫色View却毫无反应,如何让紫色View随着绿色View变化呢?选中紫色View,将中部的两条横线勾上,再将绿色View的宽高修改为300*300

运行:

可以看到,此时紫色View的宽度和高度已经可以随着绿色View的宽度和高度变化了。
3. Autoreszing的作用是什么?
autoreszing作用其实是为了做屏幕适配,通过勾选不同方向上的线条可以对某个控件进行不同的约束。主要有以下两点:
周围四条线的作用:代表此控件到四条边上的距离是固定的。
内部两条线的作用:代表此控件的宽度和高度是否要随着父控件的宽度和高度变化而变化。
Autolayout学习(1)-了解Autoreszing的更多相关文章
- sizeClass和autolayout学习资源整理
sizeClass和autolayout,看来不得不開始放弃frame的写法,收集点资料集中学习下 Adaptivity User Interfaces苹果官方文档:https://developer ...
- AutoLayout学习之理解intrinsicContentSize,Content Hugging Priority,Content Compression Resistance Priority
TableViewCell的高度计算应该是所有开发者都会使用到的东西,之前都是用代码计算的方法来计算这个高度.最近有时间看了几个计算Cell高度的方法.基本上都用到了AutoLayout,这篇首先介绍 ...
- 关于instrinsicContentSize, ContentHuggingPriority, ContentcompressionResistancePriority的理解
ios 关于intrinsic理解 最近由于项目的需要想给MBProgressHUD添加一个自定义的view, 结果花费了一两个小时也没添加上去,添加上去的view没有实际的大小,即使你给他设置了一个 ...
- 在Swift中使用AutoLayout-VFL(AutoLayout-VFL笔记)
1.背景 iOS开发这几年, UI布局工具从frame到Masonry到SnapKit, sb和xib的AutoLayout也用过, 但是代码版本的AutoLayout倒是没用过, 最近一年, 频频发 ...
- iOS - 第三方库总结篇
Swift版本点击这里 欢迎加入QQ群交流: 594119878 About A curated list of iOS objective-C ecosystem. How to Use Simpl ...
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
- 【转】iOS学习之Autolayout(代码添加约束) -- 不错不错
原文网址:http://www.cnblogs.com/HypeCheng/articles/4192154.html DECEMBER 07, 2013 学习资料 文章 Beginning Auto ...
- iOS学习之Autolayout
转载自:http://vit0.com/blog/2013/12/07/iosxue-xi-zhi-autolayout/ 学习资料 文章 Beginning Auto Layout Tutorial ...
- 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言
1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...
随机推荐
- python初识第二篇
python 编码: 第一次编程有时候会遇到乱码的情况,就可以通过以下的情况来解决 在Windows中默认的就是gbk编码,如果在代码头两部定义utf-8,系统还会按照系统的方式来定义. python ...
- Java数组操作利器:Arrays工具类
java.util.Arrays提供大量的工具方法来操作数组,这些方法全是静态方法. 1 便捷创建List public static <T> List<T> asList(T ...
- 【BZOJ-4562】食物链 记忆化搜索(拓扑序 + DP)
4562: [Haoi2016]食物链 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 133 Solved: 112[Submit][Status] ...
- 微软注册dll在dotnet开发时起到缓存的作用
经过试验,我发觉只要是注册了dll之后,会在全局的环境中得到很好的体现,比如无需指定具体物理路径的dll引用,搜索即可引用等,同时也得到一点: 1.会缓存起这个dll先,在不重启电脑的情况,本地物理路 ...
- EF-CodeFirst-3搞事
本文学习旺杰兄的 CodeFirst 系列教程而写.尽量摆脱之前的影子写出自己的理解 表间关系.级联删除 简单玩法已经走通了,但是我就是想搞点事出来.今天来搞搞表间关系和级联删除 表间关系 毫无疑问在 ...
- codevs3500 快速幂入门题解
codevs3500 快速幂入门题解 //我也是抄的题解 题目描述 Description 输入3个数a,b,c,求a^b mod c=? 输入描述 Input Description 三个数a,b, ...
- Java 线程池的使用
转载原文链接: http://www.cnblogs.com/dolphin0520/p/3932921.html 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有 ...
- ubuntu nginx 安装以及配置文件详解
1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...
- awk过滤数据
awk -F ',' '{if($2 ~/\./ ) {print $1,$2 }}' 20160905_names > ttt1 awk -F ',' '{if($2 !~/[0-9]+\.[ ...
- curl方式创建elasticsearch的mapping
curl方式创建elasticsearch的mapping curl -XPUT 'http://192.168.1.105:9200/bank/item2/_mapping' -d '{ " ...