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中的UIImageView扁平化为单个UIView [重复]