1、自动布局(autolayout)ios
一款ios app最主要的UI组件是由一个个相对独立的可视化单元组成,例如view、label、button等。这些可视化单元的关系由两个基本关系构成:兄弟关系和父子关系。
app
对于任何一个UI组件,肯定了它的位置(相对于父级或兄弟级)、大小也就肯定了它在整个UI视图中的展示效果。
iphone
Autolayout(以及在ios8中新增的sizeclass)是为了解决这些UI可视单元的布局、排列问题。iphone5之前,苹果尺寸大小同样,咱们能够将一个可视单元的位置写死,这样是没问题的,可是现在,随着iphone5 和iphone6的发布,苹果尺寸有多种可能,这就要求咱们app的UI元素具备在屏幕尺寸不一样的设备上具备必定动态的可调性。目前苹果推出的最好的解决方案就是使用autolayout和sizeclass组合对UI可视单元进行全方位的调整,经过这样整个app能知足不一样设备、不一样应用场景的需求。布局
Autolayout的做用是:帮助开发人员肯定在不一样设备环境下,同一可视单元所应具备合适的位置和尺寸。所以,当一个控件(例如:UIView、Button)上施加的约束可以惟一肯定它的frame(x,y,width,hight)的时候,咱们的自动布局才是正确的。咱们经常容易犯约束不足(约束太少)和约束冲突(约束太多)两种错误,例如:若是咱们给出的约束只能肯定这个view的大小或者位置中的某一项(例如y)的时候,就会出现约束不足的状况,在xib或storyboard的左侧提示框中会出现黄色的警告;若是给出的约束推导出两个甚至是多个相互矛盾的位置尺寸的时候,就会产生布局错误的提示。ui
2、sizeclass属性code
它是对当前全部ios设备尺寸的一个抽象,因为如今不少种ios设备尺寸,若是按照之前那种针对特定设备来编写不一样设备布局的话,会下降开发效率。如今有了sizeclass,事情就好办多了。如今的设备不是不少吗,那咱们就将屏幕的宽和高分红三种状况:(Compact、Regular和Any),也就是紧凑、正常和任意。这样宽和高的各自三种状况组合,一共就有9种状况。以下图所示:ip
针对每一种状况,咱们能够单独在storyboard或xib中设置UI控件的自动布局和约束。甚至某一个UI控件是否须要显示都能轻松实现。开发
关于sizeclass的详细解释,请参考苹果官方文档。
文档
3、storyboard中autolayoun和sizeclass的应用io
在Xcode6中,开发者能够根据实际须要,针对sizeclass九种组合中的某一种或几种分别进行自动布局的设置,这样,当app运行于不一样尺寸屏幕、不一样旋转方向的时候,就能够根据当前环境的size class状况使用咱们预先设置好的布局信息,从而达到app ui极大的灵活性。
实例的例子,请上百度自行查找,本身找例子练习。
4、添加布局约束的方式
底部布局约束按钮
打开xib或storyboard,选中某一UI控件,再点击上图红色圈圈。如上就是采起底部布局方式。
按住Control键拖拽鼠标
在xib或storyboard中,选中某一UI控件,而后按住Control键,接着按住鼠标左键拖动到另外一个控件(或边界)处,松开鼠标后会弹出适用的约束菜单,你能够选择约束进行添加。这种方式比上一种方式快得多。