簡體   English   中英

layoutifneeded不會觸發layoutSubviews

[英]layoutifneeded does not trigger layoutSubviews

所以,我有這樣的代碼

UIView.animate(withDuration: 2) {
    self.navigationController?.navigationBar.isHidden = self.hideNavBar
    view.layoutIfNeeded()
//    view.setNeedsLayout()
}

但是當我使用view.layoutIfNeeded()調用此代碼時,根本不調用主視圖的layoutSubview函數

但是,如果我改為調用view.setNeedsLayout() ,則會調用layoutSubview函數,並且所有約束都將更新。

view.setNeedsLayoutview.layoutIfNeeded不應該都調用layoutSubview函數嗎? 只是他們的時間有些不同?

顧名思義, layoutIfNeeded方法可立即進行 layoutIfNeeded ,但layoutIfNeeded是存在“無效”視圖。 setNeedsLayout而是使視圖“無效”,但是它將在下一個更新周期中進行布局。

調用(首先setNeedsLayout然后layoutIfNeeded )確保視圖無效並立即重新布局。

從文檔:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM