iOS-關(guān)于View布局的總結(jié)

一鸳惯、寫在前面

開發(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

  1. 同一份代碼文件的作者會(huì)有很多讶隐,不同作者同時(shí)修改同一份代碼的情況也不少見。因此久又,使用Git進(jìn)行代碼版本管理時(shí)出現(xiàn)Conflict的幾率也比較大巫延。

iOS開發(fā)過(guò)程中,會(huì)遇到最蛋疼的兩種Conflict一個(gè)是project.pbxproj地消,另外一個(gè)就是StoryBoardXIB炉峰。因?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í)間在這一層蛾号,包括其拓展性,都很重要涯雅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鲜结,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌精刷,老刑警劉巖拗胜,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異怒允,居然都是意外死亡埂软,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門纫事,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)仰美,“玉大人,你說(shuō)我怎么就攤上這事儿礼】г樱” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蚊夫,是天一觀的道長(zhǎng)诉字。 經(jīng)常有香客問(wèn)我,道長(zhǎng)知纷,這世上最難降的妖魔是什么壤圃? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮琅轧,結(jié)果婚禮上伍绳,老公的妹妹穿的比我還像新娘。我一直安慰自己乍桂,他們只是感情好冲杀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著睹酌,像睡著了一般权谁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憋沿,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天旺芽,我揣著相機(jī)與錄音,去河邊找鬼辐啄。 笑死采章,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壶辜。 我是一名探鬼主播悯舟,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼士复!你這毒婦竟也來(lái)了图谷?” 一聲冷哼從身側(cè)響起翩活,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阱洪,失蹤者是張志新(化名)和其女友劉穎便贵,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冗荸,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡承璃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚌本。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盔粹。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖程癌,靈堂內(nèi)的尸體忽然破棺而出舷嗡,到底是詐尸還是另有隱情,我是刑警寧澤嵌莉,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布进萄,位于F島的核電站,受9級(jí)特大地震影響锐峭,放射性物質(zhì)發(fā)生泄漏中鼠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一沿癞、第九天 我趴在偏房一處隱蔽的房頂上張望援雇。 院中可真熱鬧,春花似錦椎扬、人聲如沸惫搏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晶府。三九已至,卻和暖如春钻趋,著一層夾襖步出監(jiān)牢的瞬間川陆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蛮位, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留较沪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓失仁,卻偏偏與公主長(zhǎng)得像尸曼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萄焦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容