UIView的snapshotViewAfterScreenUpdates:,确定afterScreenUpdates是否需要为YES

时间:2014-05-20 21:24:05

标签: ios uiview calayer

如果您在尚未显示的视图上调用 [view snapshotViewAfterScreenUpdates:NO] ,您将获得:

  

快照未呈现的视图会导致空快照。确保在屏幕更新后快照或快照之前,您的视图至少呈现过一次。

通过将参数更改为YES来消除这一点,这是有道理的。传递YES会影响性能,除非尚未显示,否则我不需要“屏幕更新后”。有没有办法知道什么时候传入NO会导致错误,所以我只能在那种情况下传入YES?

我尝试了 [查看snapshotViewAfterScreenUpdates:view.layer.needsDisplay] ,但是没有这样做。

3 个答案:

答案 0 :(得分:2)

我不认为UIView会曝光它是否有未修改的变化。当我知道(基于上下文)视图已经显示时,我通常只传递NO,例如为即将被删除的视图创建快照时。

答案 1 :(得分:0)

它应该是YES以满足以下情况,例如,当您的视图尚未完成动画或完成呈现更改(设置新的背景颜色)并且用户已执行某些调用快照的操作时。如果您确定在视图完成渲染时将调用快照方法,或者您可以负担快照未完成渲染视图的快照,则可以将其设置为NO

答案 2 :(得分:0)

我在使用widhtAnchor和heightAnchor的TextFiled上遇到了同样的问题,需要在我的视图上进行设置。快照错误已消失...

在Swift 5上,我这样说:

private func setupUI() {
    view.setNeedsDisplay()
    view.snapshotView(afterScreenUpdates: true)

...