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..net
Tips:固然你也能够经过选中一个Button而后按住control拖到另外一个Button,在菜单中选择这些。code
接下来,对于这三个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不让其变小。
这两个概念很抽象,本身在程序里设置一下,运行几回就清楚了!blog
此外还有其余的一些属性,须要本身去查看帮助文档了。好了啰嗦这么多,逻辑性也不强,很杂,欢迎你们批评指正。ip