布局如果需要不会触发布局子视图

  • 本文关键字:布局 视图 如果 ios swift
  • 更新时间 :
  • 英文 :


所以,我有这样的代码

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

但是当我使用view.layoutIfNeeded()调用这段代码时,主视图的布局子视图函数根本没有被调用

但是,如果我改为调用view.setNeedsLayout(),则会调用 layoutSubview 函数并更新所有约束。

view.setNeedsLayoutview.layoutIfNeeded不应该都调用 layoutSubview 函数吗?只是他们的时机有点不同?

顾名思义,layoutIfNeeded方法会立即列出,但前提是存在"无效"视图。相反,setNeedsLayout使视图"无效",但它将在下一个更新周期中布局。

调用(先调用setNeedsLayout然后调用layoutIfNeeded(可确保视图无效并立即重新布局。

从文档:

  • 设置需求布局
  • 布局如果需要

最新更新