所以,我有这样的代码
UIView.animate(withDuration: 2) {
self.navigationController?.navigationBar.isHidden = self.hideNavBar
view.layoutIfNeeded()
// view.setNeedsLayout()
}
但是当我使用view.layoutIfNeeded()
调用此代码时,主视图的layoutSubview函数根本不会被调用
但是如果我改为调用view.setNeedsLayout()
,则会调用layoutSubview函数并且所有约束都会被提升。
不应该view.setNeedsLayout
& view.layoutIfNeeded
应该调用layoutSubview函数吗?只是他们的时间有点不同?
答案 0 :(得分:0)
layoutIfNeeded
方法,如名称所示,立即列出 ,但前提是"无效"观点。相反,setNeedsLayout
"无效"视图,但它将在下一个更新周期中进行布局。
调用(首先setNeedsLayout
然后layoutIfNeeded
)确保视图无效并立即重新布局。