setNeedsUpdateConstraints,needsUpdateConstraints等基于約束的AutoLayer的方法

1俘侠、setNeedsUpdateConstraints
當(dāng)一個(gè)自定義view的某個(gè)屬性發(fā)生改變振坚,并且可能影響到constraint時(shí)薇搁,需要調(diào)用此方法去標(biāo)記constraints需要在未來的某個(gè)點(diǎn)更新,系統(tǒng)然后調(diào)用updateConstraints.
2渡八、needsUpdateConstraints
constraint-based layout system使用此返回值去決定是否需要調(diào)用updateConstraints作為正常布局過程的一部分啃洋。
3、updateConstraintsIfNeeded
立即觸發(fā)約束更新屎鳍,自動(dòng)更新布局宏娄。
4、updateConstraints
自定義view應(yīng)該重寫此方法在其中建立constraints. 注意:要在實(shí)現(xiàn)在最后調(diào)用[super updateConstraints]
Auto Layout Process 自動(dòng)布局過程
與使用springs and struts(autoresizingMask)比較哥艇,Auto layout在view顯示之前绝编,多引入了兩個(gè)步驟:updating constraints 和laying out views。每一個(gè)步驟都依賴于上一個(gè)貌踏。display依賴layout十饥,而layout依賴updating constraints。 updating constraints->layout->display
第一步:updating constraints祖乳,被稱為測(cè)量階段逗堵,其從下向上(from subview to super view),為下一步layout準(zhǔn)備信息【炖ィ可以通過調(diào)用方法setNeedUpdateConstraints去觸發(fā)此步蜒秤。constraints的改變也會(huì)自動(dòng)的觸發(fā)此步汁咏。但是,當(dāng)你自定義view的時(shí)候作媚,如果一些改變可能會(huì)影響到布局的時(shí)候攘滩,通常需要自己去通知Auto layout,updateConstraintsIfNeeded纸泡。
自定義view的話漂问,通常可以重寫updateConstraints方法女揭,在其中可以添加view需要的局部的contraints蚤假。
第二步:layout,其從上向下(from super view to subview)吧兔,此步主要應(yīng)用上一步的信息去設(shè)置view的center和bounds磷仰。可以通過調(diào)用setNeedsLayout去觸發(fā)此步驟境蔼,此方法不會(huì)立即應(yīng)用layout灶平。如果想要系統(tǒng)立即的更新layout,可以調(diào)用layoutIfNeeded箍土。另外民逼,自定義view可以重寫方法layoutSubViews來在layout的工程中得到更多的定制化效果。
第三步:display涮帘,此步時(shí)把view渲染到屏幕上,它與你是否使用Auto layout無關(guān)笑诅,其操作是從上向下(from super view to subview)调缨,通過調(diào)用setNeedsDisplay觸發(fā),
因?yàn)槊恳徊蕉家蕾嚽耙徊竭耗悖虼艘粋€(gè)display可能會(huì)觸發(fā)layout弦叶,當(dāng)有任何layout沒有被處理的時(shí)候,同理妇多,layout可能會(huì)觸發(fā)updating constraints伤哺,當(dāng)constraint system更新改變的時(shí)候。
需要注意的是者祖,這三步不是單向的立莉,constraint-based layout是一個(gè)迭代的過程,layout過程中七问,可能去改變constraints蜓耻,有一次觸發(fā)updating constraints,進(jìn)行一輪layout過程械巡。
注意:如果你每一次調(diào)用自定義layoutSubviews都會(huì)導(dǎo)致另一個(gè)布局傳遞刹淌,那么你將會(huì)陷入一個(gè)無限循環(huán)中饶氏。

交流群

移動(dòng)開發(fā)交流群:264706196

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市有勾,隨后出現(xiàn)的幾起案子疹启,更是在濱河造成了極大的恐慌,老刑警劉巖蔼卡,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喊崖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡菲宴,警方通過查閱死者的電腦和手機(jī)贷祈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喝峦,“玉大人势誊,你說我怎么就攤上這事∫ゴ溃” “怎么了粟耻?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)眉踱。 經(jīng)常有香客問我挤忙,道長(zhǎng),這世上最難降的妖魔是什么谈喳? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任册烈,我火速辦了婚禮,結(jié)果婚禮上婿禽,老公的妹妹穿的比我還像新娘赏僧。我一直安慰自己,他們只是感情好扭倾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布淀零。 她就那樣靜靜地躺著,像睡著了一般膛壹。 火紅的嫁衣襯著肌膚如雪驾中。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天模聋,我揣著相機(jī)與錄音肩民,去河邊找鬼。 笑死撬槽,一個(gè)胖子當(dāng)著我的面吹牛此改,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侄柔,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼共啃,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼占调!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起移剪,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤究珊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后纵苛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剿涮,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年攻人,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了取试。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怀吻,死狀恐怖瞬浓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蓬坡,我是刑警寧澤猿棉,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站屑咳,受9級(jí)特大地震影響萨赁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兆龙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一杖爽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紫皇,春花似錦掂林、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽精置。三九已至计寇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脂倦,已是汗流浹背番宁。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赖阻,地道東北人蝶押。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像火欧,于是被迫代替她去往敵國(guó)和親棋电。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茎截,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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