iOS UIView:setNeedLayout、setNeedDisplay、layoutSubViews 和 layoutIfNeeded

Posted

技术标签:

【中文标题】iOS UIView:setNeedLayout、setNeedDisplay、layoutSubViews 和 layoutIfNeeded【英文标题】:iOS UIView : setNeedLayout, setNeedDisplay, layoutSubViews and layoutIfNeeded 【发布时间】:2017-02-10 11:23:58 【问题描述】:

谁能告诉我 这 4 种方法的定义和作用

 1. setNeedLayout
 2. setNeedDisplay
 3. layoutSubViews
 4. layoutIfNeeded.

我google了很多都找不到好的答案。

【问题讨论】:

我记得只调用setNeedsLayout 将确保调用layoutIfNeeded layoutSubViews 请添加作为答案,它也会帮助其他人:) 右手得到了类似的答案,可能你没有正确搜索?喜欢this或this,他们的回答有详细信息 为什么不直接命令+单击这些方法并查看内部。 :) @AbhishekThapliyal 通常你只需要调用layoutIfNeeded,如果你对约束进行了修改来让视图更新它,也可以把它放在UIView.animated中,以动画整个布局更新 【参考方案1】:
    setNeedsLayout 可用于调用第四个layoutIfNeeded。确实需要它。 setNeedsDisplay 在下一次运行循环迭代中调用 drawRect 方法,并且与所讨论的其余三个方法没有真正的关系 layoutSubviews 执行视图子视图的实际布局 layoutIfNeeded 在需要时调用 layoutSubviews。您可以使用第一种方法setNeedsLayout

【讨论】:

感谢您的回答。如果对这些进行更多解释,将会有很大帮助。 :) 你到底想解释什么? 另一个答案有详细解释,你说要简单解释,我认为他做得很好

以上是关于iOS UIView:setNeedLayout、setNeedDisplay、layoutSubViews 和 layoutIfNeeded的主要内容,如果未能解决你的问题,请参考以下文章

iOS 状态栏和 UIView

IOS将UIVIew中的UIImageView扁平化为单个UIView [重复]

iOS动画1 — UIView动画

如何在 iOS 中使用 UIView 动画显示 UIView,如 UIAction 表?

iOS UIView设置圆角

ios uiview封装动画(摘录)