iOS布局之Masonry框架簡單解讀

iOS布局有很多種方式,找到一種適合你的并且被大家都認(rèn)可的框架,然后熟練掌握它就可以了。我的選擇Masonry。

masonry框架解讀思路

masonry總共有十個(gè)類文件,其中最總要的有四個(gè),View+MASAdditions、MASConstraintMaker、MASConstraint、NSArray+MASAdditions。熟練掌握這四個(gè)類你就掌握了masonry的核心。

這四個(gè)類也可以分解開來,View+MASAdditions和NSArray+MASAdditions可以歸納為一組,一個(gè)是對(duì)單個(gè)view設(shè)置約束,一個(gè)是對(duì)一組view設(shè)置約束;MASConstraintMaker內(nèi)包含非常多的MASConstraint對(duì)象負(fù)責(zé)設(shè)置約束;MASConstraint是約束的屬性。

在View+MASAdditions和NSArray+MASAdditions有三分方法,mas_makeConsstaint、mas_updateMakeConsstaint、mas_reMakeConsstaint三個(gè)方法,這三個(gè)方法分別負(fù)責(zé)添加,更新,重設(shè)約束,在回調(diào)中通過MASConstraintMaker對(duì)象給視圖添加約束條件。

masonry更新約束注意事項(xiàng)

在vc中,通過- (void)updateViewConstraints{ ?}方法來更新約束,在view中通過 - (void)updateConstraints { ?}方法更新約束,在masonry中更新約束并不會(huì)立即生效,需要我們來觸發(fā)。setNeedsUpdateConstraints方法告訴視圖有約束需要跟新(推測內(nèi)部是添加了監(jiān)聽事件),updateConstraintsIfNeeded這個(gè)方法并不是必須的,但是有時(shí)候不調(diào)用就無法起到我們的效果。但是,官方都是這么寫的,從約束的更新原理上講,這應(yīng)該寫上。出發(fā)約束更新的方法layoutIfNeeded。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS網(wǎng)絡(luò)編程讀書筆記 Facade Tester客戶端門面模式的實(shí)例(被動(dòng)版本化) 被動(dòng)版本化,所以硬編碼URL...
    melouverrr閱讀 1,699評(píng)論 3 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • AFHTTPRequestOperationManager 網(wǎng)絡(luò)傳輸協(xié)議UDP、TCP、Http、Socket、X...
    Carden閱讀 5,317評(píng)論 0 12
  • 從哪說起呢? 單純講多線程編程真的不知道從哪下嘴。。 不如我直接引用一個(gè)最簡單的問題,以這個(gè)作為切入點(diǎn)好了 在ma...
    Mr_Baymax閱讀 2,910評(píng)論 1 17
  • 離除夕還有兩天,姥姥一直催著媽媽送她回家。來了20多天,經(jīng)常掛在嘴邊的一句話就是,怕給你們添麻煩。 其實(shí)從暑假照顧...
    那就一起等風(fēng)來吧閱讀 253評(píng)論 0 0

友情鏈接更多精彩內(nèi)容