一,UI篇
? ? ? ? ?版本迭代的過程中,大部分的時間在和UI打交道,UI開發(fā)也是iOS開發(fā)里面比較辛苦的地方。從autoResize(純frame布局)到autoLayout(通過約束布局,其實(shí)是通過約束計算frame來布局),iOS布局的痛點(diǎn)在高度的計算。
? ? ? ? 上面談到的是開發(fā)難度,此外,從維護(hù)難度上來講,如果UI人員對界面做了修改,這里針對小的修改,如果是大的修改,可能重新做的可能性更大,不涉及維護(hù),如果是小的修改,我們更愿意在原有的基礎(chǔ)上去維護(hù)。維護(hù)的過程,痛點(diǎn)在于模塊上,當(dāng)然還涉及高度計算。如果對一個View,沒有很好的分塊,所以子View都維護(hù)到同一個層級,再加上使用autolayout,那么對于開發(fā)和維護(hù)來說,都是災(zāi)難。
? ? ? ?為此,總結(jié)一套高效的UI開發(fā)規(guī)范,提高開發(fā)和維護(hù)速度,是十分有必要的。具體規(guī)范如下:
1,分塊
最重要的地方在于分塊,分塊的原則是從上到下,從左到右,塊里面內(nèi)容不宜過多,最好和產(chǎn)品邏輯對應(yīng)起來。
先從上到下,分成一層一層堆疊,然后對具體某一層,再采取從上到下的原則,直到縱向不可再分,然后針對某一塊,進(jìn)行橫向劃分,從左到右。
2,采用autolayout還是autoResize?
眾所周知,同一個view層級,不可以autolayout和autoResize布局并存,采用autolayout的view層級使用autoResize設(shè)置frame是無效的。
2.1 如果采用純代碼的方式繪制UI,那么autoResize就是一個很好的選擇,整個模塊采用設(shè)置frame的方式進(jìn)行布局。采用autoResize的話,就不用考慮約束的沖突,以及版本兼容性問題。干凈清爽。
2.2 平時高強(qiáng)度的開發(fā)過程中,大部分人采用的是xib或者storyboard進(jìn)行畫界面,采用這兩種方法進(jìn)行開發(fā)的時候,采用autolayout就是首選。當(dāng)然,也可以采用autoResize。純代碼與xib的區(qū)別在于,xib中的組件會實(shí)例成對象,這樣避免了純代碼實(shí)例化組件的邏輯,只需要設(shè)置frame即可。
二,MVC我們需要注意什么
MVC的具體結(jié)構(gòu)不用多說。只需要說一下核心。
1.Model控制View,View的狀態(tài)無記憶。
具體表現(xiàn)在一下幾個方面:
1.1 Model是我們首先關(guān)注的東西,必須有Model才顯示UI,缺省可以看作是特殊情況。
1.2 View的狀態(tài)無記憶,什么model對應(yīng)什么view,view的狀態(tài)不能受之前model狀態(tài)的影響,若要做到這一點(diǎn),需要牢記有if的地方,一定不要忘了else。
2.Controller這一層,只處理模塊(可以看作是View模塊)邏輯。模塊內(nèi)部邏輯,由模塊本身負(fù)責(zé)處理,或者共用的邏輯抽出來工具類來處理。