我的理解是,执行后
setNeedsLayout
会将视图标记为“脏”,以便在下一个渲染周期中,视图将被重新布局。如果视图被标记为“脏”,layoutIfNeeded
将强制立即触发重新布局。
但是,即使
layoutIfNeeded
立即开始布局,也不意味着layoutIfNeeded
之后的代码会等待完成。渲染部分是一个异步操作,它将由核心图形通过runloop来处理。
myView.setNeedsLayout()
myView.layoutIfneeded()
print(myView.frame)
我的观点是,上面帧的打印可能并不总是得到正确的帧,因为渲染操作是一个异步任务,我说得对吗?
一些背景: