iOS開發(fā):從一個(gè)簡(jiǎn)單的例子看QuickVFL和Masonry的布局思路差別

最近看了劉坤的一篇博客(感興趣的自己去看 )。里面講到使用masonry進(jìn)行布局的奄薇。具體情況是這樣的:

這一節(jié)我們舉例一個(gè)簡(jiǎn)單的區(qū)塊布局驳阎,常見一些電商類活動(dòng)資源模板建立。需求如下:

視圖Demo

其中view1和view2同寬馁蒂,view2和view3,view4同高呵晚,view3和view4同寬, 所有的margin都是3远搪。要完成這樣要求的布局劣纲,可以很容易的用Autolayout來完成, 只需要指定好這些間距和寬度的關(guān)系就好了。

使用Masonry的實(shí)現(xiàn)是這樣的:

Masonry實(shí)現(xiàn)的代碼

當(dāng)我們沉浸到這段代碼里時(shí)谁鳍,其實(shí)我們發(fā)現(xiàn)它是直接描述四個(gè)視圖之間的關(guān)系癞季。這樣做會(huì)有一個(gè)風(fēng)險(xiǎn):當(dāng)里面有些微妙的關(guān)系而出現(xiàn)約束沖突時(shí),你是不容易立刻發(fā)現(xiàn)問題所在的倘潜”疗猓或者說,當(dāng)需求發(fā)生變化時(shí)涮因,你要修改的時(shí)全部代碼废睦,而不是部分。

如果把這四個(gè)視圖看作模塊养泡,那么這四個(gè)模塊之間的依賴是非常嚴(yán)重的嗜湃。

我們現(xiàn)在給大家看一下如何使用QuickVFL進(jìn)行布局奈应。

主要是有兩步:

1. 描述視圖的層次關(guān)系

2. 描述視圖的位置關(guān)系

第一步時(shí),我們這樣寫就可以完成工作:


視圖的層次關(guān)系

在層次關(guān)系上购披,我們把視圖展示邏輯做了分割杖挣。一次只處理一個(gè)orientation。也就是刚陡,view1和容器viewRightWrapper_是一個(gè)層次惩妇。然后,同理處理view2筐乳、view3歌殃、view4的層次關(guān)系。這樣做蝙云,雖然多了兩個(gè)視圖wrapper氓皱,但因?yàn)樵赒uickVFL里,創(chuàng)建匿名的wrapper(以_結(jié)尾的視圖名字)是無成本的贮懈,所以可以忽略此問題匀泊。

第二步,我們從層次的上朵你,從外到內(nèi)分別寫它們的位置關(guān)系各聘。我們首先處理最外層的關(guān)系

添加上最外層的位置關(guān)系

在寫這一層的關(guān)系的時(shí)候,你的眼里應(yīng)該就只有view1和viewRightWrapper_抡医。嗯躲因,使用VFL很compact地描述清楚了他們的位置關(guān)系。

再往里走一層:

添加第二層的位置關(guān)系

寫這一層的關(guān)系時(shí)忌傻,你的眼里應(yīng)該只有view2和view34Wrapper_大脉。忘掉你已經(jīng)處理過的view1和viewRightWrapper_吧,它們已經(jīng)私奔水孩,跟你一點(diǎn)關(guān)系都沒有了镰矿。至于view3、view4俘种,那是view34Wrapper_要處理的秤标,你就不用勞心了。

OK宙刘,來看最后一層:

最里面的一層的位置關(guān)系

Job done苍姜!在這過程中,其實(shí)每一個(gè)模塊都是“解耦”的悬包。你在思考如何布局的時(shí)候衙猪,就這樣如剝洋蔥一樣,一層一層,有條不紊垫释。

最關(guān)鍵的時(shí)丝格,你直接把這個(gè)文件交給框架,它就會(huì)幫你把所有東西弄好饶号。創(chuàng)建視圖的事情都不用你做铁追!

然后我們?cè)賮碛懻撘幌庐a(chǎn)品經(jīng)理要來開需求的情況季蚂。比如茫船,把view2、view3扭屁、view4的品自結(jié)構(gòu)倒轉(zhuǎn)過來算谈?壓根不是個(gè)事兒!只要在第二層里把:layout在V方向上view2和wrapper調(diào)個(gè)位置就可以料滥。

跳出這條條框框的細(xì)節(jié)然眼,我們來討論最大的一個(gè)細(xì)節(jié):使用QuickVFL最大的工作不是寫代碼,而是在寫一個(gè)json結(jié)構(gòu)體葵腹!我們?cè)趯懘a的時(shí)候永遠(yuǎn)不要忘了這句話高每,多行代碼就是多一個(gè)香爐。多一個(gè)香爐就多一個(gè)鬼践宴。會(huì)在開發(fā)流程上多很多麻煩鲸匿。所以,當(dāng)你的project里阻肩,布局的大部分工作使用配置完成而不是代碼時(shí)带欢,你的開發(fā)效率肯定能大進(jìn)一步。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烤惊,一起剝皮案震驚了整個(gè)濱河市乔煞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柒室,老刑警劉巖渡贾,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霸褒,死亡現(xiàn)場(chǎng)離奇詭異香伴,居然都是意外死亡望忆,警方通過查閱死者的電腦和手機(jī)涮毫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門颤芬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渣刷,“玉大人煎饼,你說我怎么就攤上這事位岔》揽” “怎么了牺丙?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我冲簿,道長(zhǎng)粟判,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任峦剔,我火速辦了婚禮档礁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吝沫。我一直安慰自己呻澜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布惨险。 她就那樣靜靜地躺著羹幸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辫愉。 梳的紋絲不亂的頭發(fā)上栅受,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音恭朗,去河邊找鬼屏镊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛痰腮,可吹牛的內(nèi)容都是我干的而芥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼诽嘉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蔚出!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虫腋,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤骄酗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后悦冀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趋翻,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年盒蟆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踏烙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡历等,死狀恐怖讨惩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寒屯,我是刑警寧澤荐捻,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布黍少,位于F島的核電站,受9級(jí)特大地震影響处面,放射性物質(zhì)發(fā)生泄漏厂置。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一魂角、第九天 我趴在偏房一處隱蔽的房頂上張望昵济。 院中可真熱鬧,春花似錦野揪、人聲如沸访忿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醉顽。三九已至,卻和暖如春平挑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背系草。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工通熄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人找都。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓唇辨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親能耻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赏枚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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