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。