iOS 8 AutoLayOut入门
http://blog.csdn.net/asdfg13697116596/article/details/42562565
iOS 8 AutoLayOut入门
自从iOS6带来Auto Layout这个特性以来,用户界面的布局便变得简单起来。iOS8更是做的更好
本文主要针对初学者分享一下自己最近学习AutoLayout的心得体会。Let’s Start!
首先,什么是AutoLayout?
简单来说,就是自动布局,当你旋转屏幕或者缩放你的UI来适应不同大小的屏幕等,程序的视图看起来依然很nice,你通过可以在IB中增加或者编辑约束(constraints)来实现。
启用AutoLayout,可以直接在Main.storyboard勾选AutoLayout
2.通过一个程序来认识Autolayout的一些操作和特性
首先在storyboard中拖入三个UIButton建立如下的方块,竖屏下显示
(注意:Xcode6中,如果直接拖入UIView不增加constraint,当你拖入下一个UIView会直接导致前一个的长宽都为零,所以当拖入一个UIview必须设置为reset to suggested constrains)
不做任何的改变,横屏下
但是实际上,你想得到的是下面的效果
3.怎么做呢
选中两个Button,按住⌘,然后在Editor 菜单中,选择Pin\Widths Equally
同样地,选择Editor\Pin\Horizontal Spacing.
Tips:当然你也可以通过选中一个Button然后按住control拖到另一个Button,在菜单中选择这些。
接下来,对于这三个View分别应用:
左侧: Top Space to Superview
Leading Space to Superview
右侧: Top Space to Superview
Trailing Space to Superview
下部: Leading Space to Superview
Trailing Space to Superview
Bottom Space to Superview
此时,“T”型的constraint还是橘黄色的,表示欠约束。
当然,从左侧的Document Outline也可以看到有一个红色的箭头,表示欠约束。
接下来选中三个View,添加Heights Equally。
此时,运行,ok搞定!
4.下面介绍几个常见的问题:
有些时候,我们运行程序会得到提示Unable to simultaneously satisfy constraints,表示constraints冲突,也就是过约束。一般来说,一个试图四个约束就够了,多了肯定得移去,不贵再多,恰到好处方好。
intrinsic content size(固有尺寸):
当我们拖入一个Button的时候会发现,button的大小是确定的。为什么呢?这是因为它可以根据文字和背景自动计算它的大小,想要改变它的大小可以通过移除Width constraint,再设置自己偏好的大小。如果想取消,只需要选择Editor \Size to Fit Content.
Hugging priority (拥抱优先级)确定view有多大的优先级阻止自己变大。
其实content Hugging就是要维持当前view在它的intrinsic content size,可以想象成给view添加了一个额外的width constraint,此constraint试图保持view的size不让其变大。
Compression Resistance priority(压缩阻抗优先级)确定有多大的优先级阻止自己变小。
Content Compression Resistance就是要维持当前view在他的optimal size(intrinsic content size),可以想象成给view添加了一个额外的width constraint,此constraint试图保持view的size不让其变小。
这两个概念很抽象,自己在程序里设置一下,运行几次就清楚了!
此外还有其他的一些属性,需要自己去查看帮助文档了。好了啰嗦这么多,逻辑性也不强,很杂,欢迎大家批评指正。
iOS 8 AutoLayOut入门的更多相关文章
- ios中autolayout
IOS 6 自动布局 入门-1 Matthijs Hollemans on September 29, 2012 Tweet 这篇文章还可以在这里找到 英语, 韩语, 土耳其语 If you're ...
- 【转】iOS 开发怎么入门?
原文网址:http://www.zhihu.com/question/20264108 iOS 开发怎么入门? 请问有设计模式.内存管理方面的资料吗?最好有除了官方文档之外的其它内容,10 条评论 分 ...
- 李洪强iOS开发之-入门指南
李洪强iOS开发之-入门指南 1零基础小白如何进行iOS系统学习 首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走:再次,学技术最重 ...
- IOS 客户端测试入门.pdf
IOS 客户端测试入门 http://www.open-open.com/doc/view/42d1257bf67946f595e843bfdbdfeabf
- iOS 8 AutoLayout与Size Class自悟(转载)
iOS 8 AutoLayout与Size Class自悟 Size classiOS 8 AutoLayout 前言 iOS8 和iPhone6发布已经过去蛮久了,广大的果粉终于迎来了大屏iPhon ...
- iOS 6 Passbook 入门 1/2
http://www.raywenderlich.com/zh-hans/23066/ios-6-passbook-%E5%85%A5%E9%97%A8-12 iOS 6 Passbook 入门 1/ ...
- iOS 开发如何入门
iOS 开发如何入门 新人如何入门 上一篇文章的回复中,很多读者让我推荐入门图书.其实我觉得每个人可能有自己喜欢的学习方式,我习惯的不一定适合你.不过我可以分享一下我当时是如何学习 iOS 开发的. ...
- 关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市
承蒙广大读者的厚爱我的 <iOS实战:入门与提高卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见.http://item.jd.com/11766718.html ...
- ios 7 Autolayout bug
ios 7 Autolayout bug 错误类型:NSInternalInconsistencyException(SIGABRT) 详情:Auto Layout still required af ...
随机推荐
- 【面试题041】和为s的两个数字VS和为s的连续正数序列
[面试题041]和为s的两个数字VS和为s的连续正数序列 题目一: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. ...
- 服务接口API限流 Rate Limit
一.场景描述 很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统. 也就是面对大流量时,如何进行流量控制? 服务接口的流量 ...
- awk处理之案例二:awk匹配文本
编译环境 本系列文章所提供的算法均在以下环境下编译通过. [脚本编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...
- iOS获取手机相关信息
iOS具体的设备型号: #include <sys/types.h> #include <sys/sysctl.h> - (void)test { //手机型号. size_t ...
- Node.js缓冲模块Buffer
前言 Javascript是为浏览器而设计的,能很好的处理unicode编码的字符串,但对于二进制或非unicode编码的数据就显得无能为力. Node.js继承Javascript的语言特性,同时又 ...
- lintcode: 旋转图像
旋转图像 给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像. 解题 顺时针旋转90度 就是 上下翻转,再主对角对折 public class Solution { /** * @param ma ...
- Java 常用数据结构深入分析(Vector、ArrayList、List、Map)
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...
- AA投资
AA投资创建于2015年,总部位于北京,创始人成妙绮和王浩泽,专注于天使轮的技术创新驱动的TMT项目投资. 投资方向 AA投资是一家2015年才成立的风险投资机构,专注于种子轮.天使轮.Pre-A轮的 ...
- ps里面的批处理教程
先打开窗口-动作 1.新建动作文件 打开一张图片,进行图片编辑,编辑完就是把图片保存在一个文件里面.停止动作. 再去打开ps文件-自动- 批处理 只要把 包含所有子文件夹(I)勾起来就行了 设置就能完 ...
- phantomjs + selenium headless test
1. 安装selenium pip install selenium 2. 安装phantomjs 如果你是Ubuntu12.04,默认安装的版本是1.4.这个会出错. 需要安装1.9.7 cd /u ...