autolayout 概述

来源:互联网 发布:sql的使用意义 编辑:程序博客网 时间:2024/05/29 18:45

        终于可以完全放弃 iOS5的支持了,等了好久才用上这 autolayout。好吧,虽然这东东已经出现两三年了,不过现在才能用得上,所以现在才学,我是个懒家伙。好记性不如烂笔头,学点记点总是好的。

        autolayout 彻底改变了视图而已,将咱们的注意力从 frame、方向等集中到了屏幕上的对象之间的关系上。自动布局简化了布局,加上现在 XCODE 中 IB 的强力支持,可以说是极为方便。不过越是将复杂的东西简单化,这本身也会复杂化,系统越为咱们做得多,那咱们可控制的东西就越少,控制起来也越复杂。后面我们会看到,布局简化了排版,但动画、更新却更复杂。

        本系列聚焦在自动布局的代码上面,所以不会有什么太多关于 IB自动布局方面的介绍,IB自动布局写得好的在这里:

iOS6 1/2 、http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2

iOS6 2/2 、http://www.raywenderlich.com/20897/beginning-auto-layout-part-2-of-2

iOS7 1/2、http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

iOS7 2/2、http://www.raywenderlich.com/50319/beginning-auto-layout-tutorial-in-ios-7-part-2


        一般来说,类似于这种文章应该一上来就是代码,起码能提高一下兴趣,不过由于自动布局的特殊性,还是先不上代码的话,会难以理解。


1、约束

        约束,即束缚、限制,在 iOS 中用来描述布局的规则,表现为NSLayoutConstraint类。只有 iOS6及以后的版本才支持。它们限制视图相互之间的关系,以此来限制它们可能的布局方式。利用约束,可以指定“这些 item 总在水平线上对齐”或“这个 item1 的宽度与 item2的高度相等”。即约束提供布局信息,将约束添加到视图中,视图则根据约束提供的布局信息来进行布局。

        约束规则必须有意义。如果view1不能位于 view2的左边同时又位于 view2的右边。在使用约束时,要确保规则严格保持一致,不能冲突。XCODE 提供了一堆的可能的错误或冲突信息,说真的,很难看懂。

        约束规则必须要足够具体。比如,咱们只提供一个约束信息:view1位于 view2的左边10个 point距离。但垂直信息没说,系统压根儿不知道 view1和 view2的垂直关系,所以有可能 view1位于 view2的上面,也可能在下面,还有可能在同一水平线上,系统可猜不着你的想法。所以规则要足够具体,要保证系统能够确定完全确定视图的位置、大小关系才行。



0 0
原创粉丝点击