iOS7应用开发9:autolayout自动布局

来源:互联网 发布:如何提高淘宝卖家信誉 编辑:程序博客网 时间:2024/06/04 19:31

【时间太紧张,追课的过程中感觉压力很大,时间不够用的问题相当严重。想单靠业余时间自学一门技术果真不是一件容易的事儿,就拿上节课的animation来说吧,文章里基本上只能记录了一下课程的大纲,很多具体的内容都完全没弄清楚,demo也只是完全按照课上的演示逐句敲好。等赶上进度后,肯定是要回来复习的,届时会尽可能细致地研究ios开发的细节问题。】

1、自动布局的概念:

自动布局会在不同的设备屏幕尺寸或者设备的摆放位置(垂直/水平),以及其他显示视图面积发生改变的时候,自动地设置显示的视图的位置。自动布局设置视图的位置更多地依赖于某种“规则”,而不是预先设置好的坐标点位置。这些所谓的“规则”,可以认为是某一个视图同其父视图或者其他兄弟视图之间的位置关系。

实现自动布局的api(或者说,某个类):NSLayoutConstraint;更方便地方法可以通过xcode 5可视化方法实现。

2、自动布局实现方法:

举例说明,在storyboard中,有两个视图,在垂直模式时一上一下;当方向调整为水平模式时,下面的视图可能会消失,如下图所示:

 

如果想对这个问题进行改进的话,比如我们想让这两个视图始终相对于屏幕处于一个固定的位置,如按键1位于左上角,按键2位于右下角。主要有三种方法:

(1)在设计视图时将视图紧贴蓝色的位置提示线,并如下图所示,选中“Reset to Suggested COnstraints in View Controller”


此时选中刚才所设置的view,在size inspector中将会出现两个constraints,如下图所示:


这两个限制条件将决定了在屏幕变化的时候该视图的位置,而其大小由其内部的文本属性决定(通常情况不要对label、button等添加视图尺寸限制)。设置完成后,再次改变设备模拟器的方向,显示结果如下图所示:


由此可知,这两个视图已经可以根据屏幕的变化自适应地调整位置了。

PS:如果限制条件设置错了,可以在storyboard中执行“Clear All Constraints in View Controller”来清除全部constraints,然后重新设置即可。

(2)对某一个处在中央的视图,选中之后,在storyboard中选择Add New Alignment Constraints,选择最下面的两项,并添加(Add 2 constraints),如下图所示。这样,所选中的视图将会始终位于屏幕的最中央。


若出现问题,如位置、大小不匹配等,会显示警告,可选择各种解决方法,如改变Frame,改变constraints等。一般系统提供的解决方法都能奏效。

如果改变了视图的位置而没有改变constraints,也会出现相应的警告。

(3)通过在两个视图之间ctrl+拖动的方法建立constraints:在出现的菜单中,选择二者位置关系的constraints,如下图所示:


除此之外,子视图和父视图之间,甚至子视图和自己之间也可以通过ctrl+拖动的方式建立联系。如下图所示: