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宜肉。