一,UI篇
版本迭代的过程中,大部分的时间在和UI打交道,UI开发也是iOS开发里面比较辛苦的地方。从autoResize(纯frame布局)到autoLayout(通过约束布局,其实是通过约束计算frame来布局),iOS布局的痛点在高度的计算。
上面谈到的是开发难度,此外,从维护难度上来讲,如果UI人员对界面做了修改,这里针对小的修改,如果是大的修改,可能重新做的可能性更大,不涉及维护,如果是小的修改,我们更愿意在原有的基础上去维护。维护的过程,痛点在于模块上,当然还涉及高度计算。如果对一个View,没有很好的分块,所以子View都维护到同一个层级,再加上使用autolayout,那么对于开发和维护来说,都是灾难。
为此,总结一套高效的UI开发规范,提高开发和维护速度,是十分有必要的。具体规范如下:
1,分块
最重要的地方在于分块,分块的原则是从上到下,从左到右,块里面内容不宜过多,最好和产品逻辑对应起来。
先从上到下,分成一层一层堆叠,然后对具体某一层,再采取从上到下的原则,直到纵向不可再分,然后针对某一块,进行横向划分,从左到右。
2,采用autolayout还是autoResize?
众所周知,同一个view层级,不可以autolayout和autoResize布局并存,采用autolayout的view层级使用autoResize设置frame是无效的。
2.1 如果采用纯代码的方式绘制UI,那么autoResize就是一个很好的选择,整个模块采用设置frame的方式进行布局。采用autoResize的话,就不用考虑约束的冲突,以及版本兼容性问题。干净清爽。
2.2 平时高强度的开发过程中,大部分人采用的是xib或者storyboard进行画界面,采用这两种方法进行开发的时候,采用autolayout就是首选。当然,也可以采用autoResize。纯代码与xib的区别在于,xib中的组件会实例成对象,这样避免了纯代码实例化组件的逻辑,只需要设置frame即可。
二,MVC我们需要注意什么
MVC的具体结构不用多说。只需要说一下核心。
1.Model控制View,View的状态无记忆。
具体表现在一下几个方面:
1.1 Model是我们首先关注的东西,必须有Model才显示UI,缺省可以看作是特殊情况。
1.2 View的状态无记忆,什么model对应什么view,view的状态不能受之前model状态的影响,若要做到这一点,需要牢记有if的地方,一定不要忘了else。
2.Controller这一层,只处理模块(可以看作是View模块)逻辑。模块内部逻辑,由模块本身负责处理,或者共用的逻辑抽出来工具类来处理。
网友评论