iOS界面开发优化--创建与布局分离

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyux4869/article/details/50788210

iOS的界面开发主要是在UIViewController上面进行的,一般来说手机当前展示的一个界面就是一个UIViewController,跳转的时候就是切换另一个UIVIewController。大部分入门教材中都是推荐StoryBoard或者Xib文件来创建界面,实际上这两种方式对于多人开发的项目会造成很大的阻碍,而且对于新手学习iOS开发也是很不好的,所有个人推荐都使用纯代码方式来开发,这样控件的布局和界面之间的跳转关系就会变得很明朗。

废话不多说了,现在就来介绍界面开发时使用到的一种优化的方式。很多人在创建界面控件的时候都会使用到-(id)initWithFrame:(CGRect)frame;这个方法来创建控件,大多数的教材中也是这么说的,但是当你实际开发需要兼容各种屏幕尺寸的设备的时候,你就会发现这种方法有很大的缺陷,控件的位置和大小都是固定死的,在不同尺寸的屏幕上显示的时候或者屏幕旋转的时候就会很难看。

推荐一种优化方法,将控件的创建过程和布局过程分离实现。具体的操作如下图所示,1.将界面上所有显示的控件都定义为全局变量;2.在容器视图创建的时候创建控件对象(一般只使用init方法就行了),然后对控件的各种属性进行配置;3.重载系统的界面布局方法对控件进行布局(UIViewController重载viewWillLayoutSubviews方法,UIView重载layoutSubview方法)。

UIViewController创建子控件的过程

UIViewController布局子控件的过程

PS,UIViewController的布局过程也可以写在viewDidLayoutSubviews方法里面,不过这个方法需要手动执行。

UIView创建控件的过程,这里使用UITableViewCell的子类来~~举个栗子~~


UIView子类的布局过程

注:UIView的layoutSubviews方法会在UIView的frame属性的值被改变的时候被执行,而UIViewController的viewWillLayoutSubviews方法会在UIViewController.view.frame这个属性被改变的时候执行。所以在屏幕旋转的时候就会重新布局。

通过以上的这种分离方式来开发界面,就可以很方便的对界面进行动态布局。

猜你喜欢

转载自blog.csdn.net/liyux4869/article/details/50788210