使用ios的autolayout做UI

阅读更多

        之前一直用的是老的坐标定位,和自动缩放进行ui定位,现在iphone6出来了,尺寸又变了,为了适应各种屏幕,以前的通过判断设备类型和设备屏幕大小调用不同的xib已经有点过时了,或者说太浪费时间了,也可以说是一种bug。现在必须使用新的autolayout来定义界面。


        使用autolayout必须知道Constraints。就是约束规则,通过定义一系列规则来描述某个控件的位置和大小,和其他控件的关系,同时可以定义优先级,优先考虑优先级高的规则。
Constraints包含以下规则:
1.自身规则。
定义自己的宽度或者高度,定义自己距离父窗口上下左右的距离,或者是居中点。
2.和其他控件规则。
定义2个控件的上下左右对齐方式,定义2个空间的上下距离。
基本上通过这2种规则的定义,我们就可以轻松的描述一个界面的信息,而且可以在iPhone4s,iPhone5,iPhone6,以及ipad上都能保持良好适配。


        ios8还支持SizeClasses,对于某一下在pad上和phone上希望显示不同的控件,或者不同的控件大小,都可以通过这个功能,完成,比如aW,aH表示任意的设备,rW,aH表示一个pad等。不过个人觉得这个功能有点落伍,把在代码中判断设备的功能放到ui编辑器了而已。


        此外ios6和7、8对于autolayout的理解方式不一样,比如ios7和8中如果是个UITabBarController的一个界面,最下面的空间的bottom规则定义是,距离父窗口底部距离是49(49是tabbar的高度),而在ios6中则应该定义为距离父窗口的底部距离是0。而这个只能在代码里硬判断,然后手动添加规则了。估计这也是在xcode6中开始放弃ios6的原因吧。

 

你可能感兴趣的:(使用ios的autolayout做UI)