一鸳惯、寫在前面
開發(fā)者在寫View的時(shí)候一定逃不掉的就是這個(gè)命題倒得。用Frame
也好用Autolayout
也好立叛,如果沒有精心設(shè)計(jì)過(guò)固阁,布局部分一定慘不忍睹壤躲。
直接使用CGRectMake
的話可讀性很差,光看那幾個(gè)數(shù)字备燃,也無(wú)法知道view和view之間的位置關(guān)系碉克。用Autolayout
可讀性稍微好點(diǎn)兒,但生成Constraint
的長(zhǎng)度實(shí)在太長(zhǎng)并齐,代碼觀感不太好漏麦。Autolayout
這邊可以考慮使用Masonry
,代碼的可讀性就能好很多况褪。這也是我正在使用的撕贞。
使用良好的工具來(lái)做View的布局,能提高我們的工作效率测垛,也能減少bug發(fā)生的幾率捏膨。架構(gòu)不光要關(guān)心那些高大上的內(nèi)容,也要多為工程提供方便易用的小工具食侮,這樣才能發(fā)揮架構(gòu)的價(jià)值号涯。
二熬北、何時(shí)使用StoryBoard、Nib诚隙,何時(shí)使用純代碼寫View
- 同一份代碼文件的作者會(huì)有很多讶隐,不同作者同時(shí)修改同一份代碼的情況也不少見。因此久又,使用Git進(jìn)行代碼版本管理時(shí)出現(xiàn)
Conflict
的幾率也比較大巫延。
iOS開發(fā)過(guò)程中,會(huì)遇到最蛋疼的兩種Conflict一個(gè)是project.pbxproj
地消,另外一個(gè)就是StoryBoard
或XIB
炉峰。因?yàn)檫@些文件的內(nèi)容的可讀性非常差。
然而在StoryBoard
中往往包含了多個(gè)頁(yè)面脉执,這些頁(yè)面基本上不太可能都由一個(gè)人去完成疼阔,如果另一個(gè)人在做StoryBoard
的操作的時(shí)候,出于某些目的動(dòng)了一下不屬于他的那個(gè)頁(yè)面半夷,比如為了美觀調(diào)整了一下位置婆廊。然后另外一個(gè)人也因?yàn)橐砑右粋€(gè)頁(yè)面,而在Storyboard中調(diào)整了一下某個(gè)其他頁(yè)面的位置巫橄。那么針對(duì)這個(gè)情況淘邻,我就只能說(shuō):祝你好運(yùn)了。
但如果使用代碼繪制View湘换,Conflict一樣會(huì)發(fā)生宾舅,但是這種Conflict就好解很多了,你懂的彩倚。
2.需求變化非常頻繁筹我,為了完成需求而針對(duì)現(xiàn)有代碼進(jìn)行微調(diào)的情況,以及針對(duì)現(xiàn)有代碼的部分復(fù)用的情況也比較多帆离。
到開發(fā)者這邊來(lái)蔬蕊,這種情況就很蛋疼。因?yàn)檫@種改變有時(shí)候不光是UI盯质,UI所對(duì)應(yīng)的邏輯也有要改的可能袁串,開發(fā)者就會(huì)兩邊文件都改概而,你原來(lái)link的那個(gè)view現(xiàn)在不link了呼巷,然后你的outlet
對(duì)應(yīng)也要?jiǎng)h掉,這兩部分只要有一個(gè)沒做赎瑰,編譯通過(guò)之后跑一下App王悍,一會(huì)兒就crash
了。
另外餐曼,如果出現(xiàn)部分的代碼復(fù)用压储,比如說(shuō)某頁(yè)面下某個(gè)View也希望放在另外一個(gè)頁(yè)面里鲜漩,相關(guān)的操作就不是復(fù)制粘貼這么簡(jiǎn)單了,你還得重新link一遍集惋。也很麻煩孕似。
3.復(fù)雜界面元素、復(fù)雜動(dòng)畫場(chǎng)景的開發(fā)任務(wù)比較多刮刑。
要是想在基于StoryBoard
的項(xiàng)目中做一個(gè)動(dòng)畫喉祭,很麻煩。做幾個(gè)復(fù)雜界面元素雷绢,更麻煩泛烙。有的時(shí)候我們掛Custom View
上去,其實(shí)在StoryBoard
里面看來(lái)就是一個(gè)空白View翘紊。然后另外一點(diǎn)就是蔽氨,當(dāng)你的layout出現(xiàn)問(wèn)題需要調(diào)整的時(shí)候,還是挺難找到問(wèn)題所在的帆疟,尤其是在復(fù)雜界面元素的情況下鹉究。
三、總結(jié)
所以在針對(duì)View層這邊的要求時(shí)踪宠,我也是建議不要用StoryBoard
坊饶。實(shí)現(xiàn)簡(jiǎn)單的東西,用Code一樣簡(jiǎn)單殴蓬,實(shí)現(xiàn)復(fù)雜的東西匿级,Code比StoryBoard
更簡(jiǎn)單。所以我更加提倡用code去畫view而不是storyboard
染厅。
四痘绎、寫在最后
作為前端開發(fā)(包括網(wǎng)頁(yè)端、Android肖粮、iOS等)孤页,View層的變化是最大的,也是與用戶接觸最直接的涩馆,如果有bug行施,也是最影響用戶體驗(yàn)的,于是魂那,我們要花更多的時(shí)間在這一層蛾号,包括其拓展性,都很重要涯雅。