AutoLayout和代码布局
2015-12-03 本文已影响127人
严谨风
当同时使用Autolayout和代码进行页面布局时,会有冲突。当一个视图已经设置了约束,最好就不要再通过frame对视图进行修改,因为两者的冲突,往往会出现布局结果不是自己想要的,或者frame布局根本无效的境况。
但是有一种情况比较特殊,那就是通过autolayout对父视图进行了约束,然后通过代码向子视图中添加视图的情况,在这种情况下,代码布局是有效地,但是也会出现一些小问题,本文的目的就是尽量找出这些问题,并且给出相应的解决方案。
1.父视图设置了约束,子视图需要根据父视图的frame进行布局。
在这种情况下,由于父视图设置了约束,所以在加载父视图的时候父视图的frame是会变化的。所以如果要用到父视图的frame,需要在viewDidAppear或者viewDidLayoutSubviews中设置(viewDidLayoutSubviews先调用)。需要注意的是一旦页面布局发生变化,viewDidLayoutSubviews就会被调用。
2.由于最近找到了一本书,所以暂时不想再更新这篇文章了,有珠玉在前,不敢献丑了。把书名公布出来,autolayout和size class的用法在这本书中讲的很详细,妈妈再也不用担心我的自动布局啦。
书名:iOS.8.by.Tutorials.2014.12,本人较笨,不喜欢复杂的方法,之前在网上看到的关于autolayout的文章不是讲的太浅,就是讲述不清,直到看到这本书,我看英文版都觉得讲的比网上的文章讲的要清楚(似乎英文版一向讲的都比较清楚)
说了这么多,就是说,如果有autolayout不明白的地方,去看这本书中关于autolayout的章节吧,比在网上看文章好多啦!