学习 iOS Autolayout的一点经验

来源:互联网 发布:绿岸网络很多人离职 编辑:程序博客网 时间:2024/06/09 17:34

随着IOS系统的不断推新,IOS开发的方式也将发生不少变化,就以IOS开发中的Autolayout来说,AutoLayout在IOS6就已经出来了,但到到目前为止,IOS8已经出来小半年了,在开发中AutoLayout还是没有被彻底使用,而apple公司却一直在催出我们使用,可见在以后的开发中,AutoLayout的地位会越来越重要。

以下是最近在学习Autolayout的过程中学到的一些东西,全出于自己的理解,不对的地方望大家指出。

一、一个视图所需约束的多少

      1.普通的UI视图(UIView)

对于普通的视图UIview来说,想要正确完成视图的布局,就得创建足够的约束,普通视图无法计算自身的宽高,所以在创建约束时,要么添加关于视图宽高的约束,要么添加足够的其他约束,保证这些视图可以计算出自身的宽高。

 2.可以计算自身宽高的视图(UILable、UIbutton)

对于这些视图来说,因为可以计算出自身的宽高了,所以没有特殊需求的话,布局视图时添加除宽高的约束就可以了。

3.特殊的UIScrollView

在AutoLayout中,UIsrollView是比较复杂的,因为UIscrollView的实际可滚动视图大小是由它的ContentSize决定的,所以单独一个ScrollView是没法实现布局的,它必须依赖于自身的子视图来设定自己的ContentSize。

二、约束的添加规则

1.


2.

     

3.





三、约束的更新

在实际使用的过程中,发现对于UI的可变动性要求是很高的,所以在使用AutoLayout实现布局后,想更新视图的话我们必须的更新约束,到这问题就来了,对于视图的某个属性的约束正常只可以添加一个(当然不同优先级的是可以添加多个的),在添加完视图后再重新添加针对同一个视图属性的约束就会报错(storyboard中也一样),所以刚开始学AutoLayout时实现约束更新时比较困难的。

针对这个实际的问题,暂时想到以下两种方法:

1.使用变量绑定约束

实质就是创建约束时用一个变量绑定一个属性的约束,然后通过改变变量的值来更新约束即可。

2.移除子视图

当一个视图从父视图上移除时,对于这个子视图来说,它所用的约束将会被移除掉,这时候你再重新添加子视图到父视图,并重新添加约束即可。


对比上面两种方法,第二种方法虽然能实现,但是稍显复杂,建议使用第一中。



最后,在开发中用代码实现AutoLayout是比较复杂的,虽然apple提供了VFL来添加自动布局,但还是有点复杂,在此推荐用的比较多的第三方库,它对AutoLayout进行了block回调式的封装,使用比较方便,链接:masonry.




0 0
原创粉丝点击