iOS布局的心路历程

布局是每个涉及前端的task必须考虑的问题,前端的繁杂一定程度上也与此有关。由于“画布”(屏幕)的大小不一,而程序员又不能接受为每个“画布”维护一套代码,因此良好的自动布局技术会让前端趋之若鹜。

大神之所以成为大神,我觉得在于两个方面,1、聪明人能做的举一反三,而大神确得一知十,也即联系、联想能力;2、聪明人往往写一个较为通用的库让自己使用更方便,而大神确能写出极其通用的库,为全世界使用,也即总结抽象能力。

接触iOS半年多了,将和自动布局有关的心路历程总结如下:

1、使用xib和storyboard

一开始只是摸索着使用storyboard和xib,做些自己的小app,而且这两者入门简单,貌似也能满足需求,但从来不知道协同开发和维护。

2、纯code阶段

后来到了公司里,协同开发和冲突解决成为了放弃可视化界面的理由,因此使用纯code来做View和布局;

纯代码做View的坏处随后凸显了出来,虽然解决了冲突,但是300行的代码中有200+是View的逻辑,虽然抽象出来了一些基类以复用,但本质的问题还没解决;

3、iPhone6和6Plus的挑战

Phone6和6Plus的出现,让本来使用magic Number可以搞定的程序面临一次挑战,不过,人总是善于用现有的手段首先修正自己,而不是革命性的从头重来。

使用屏幕宽度自动计算其中item大小的小trick在一定程度上解决了该问题,如果没有洁癖的话。

4、约束

iphone6之前,View的code用的最多的代码肯定是:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x,y,w,h)];

从写View的大小到写View的约束,我觉得是一种革命性的思维,没有仔细调研,但我认为有一种方法论肯定论证了其可行性,所以apple才会这么大肆采用。

没有资格说apple自身提供的约束方法多难用,因为我压根就没耐心去学;而看了一眼mansory,就决定用它。apple对它的程序员不如对它的用户更用心。需要说明文档的产品一定不是好产品,这是apple告诉我们的;但针对约束方法而言,它并没有做多,但masonry做到了。

正如前面所说,个人愚见,如果要对一件事情有深入的了解,需要做到两方面,博览众长;本质抽象;希望走在大神路上的你我共勉。