【问题标题】:CALayers not showing when drawn the first time第一次绘制时不显示 CALayers
【发布时间】:2010-08-10 01:13:29
【问题描述】:

我一直在努力解决使用 CorePlot 框架时出现的一个奇怪问题,但我怀疑这不是框架本身的错误。我希望这里有人会看到类似的东西,并可以为我指明一个富有成效的方向。

我有一个显示图表的选项卡式视图。最初处于活动状态的选项卡完全没有问题,但通常当我打开下一个选项卡时,我会看到以下内容:

请注意,在上图中,缺少几个标签。如果我切换回原始选项卡,然后再次切换到第二个选项卡,则每次都很好。我已将各种诊断日志记录语句放入并确定:

  1. 在创建图表之前视图处于唤醒状态;和
  2. 正在调用每个标签的 drawInContext: 方法,包括那些缺失的标签。事实上,轴标签是最后渲染的东西之一,所以我希望它们能显示是否有任何东西,并且一些缺失的标签在存在的标签之后(和之前)被渲染。

因为渲染似乎按原样进行,并且因为这件事“第二次”画得很好,我怀疑问题在于我如何将它与视图挂钩,或者我的时间安排那里,而不是 Core Plot 本身(或者,例如,在剪辑中)。不过,我不知道如何调试它,并且很想听听任何有类似问题经验的人的意见。

谢谢!

【问题讨论】:

    标签: cocoa core-animation core-plot


    【解决方案1】:

    六年后,我处理了同样的问题。创建图层时,当动画需要它时,它可能尚未在屏幕上绘制第一次。第二次是这样。

    简单的解决方法是在您尝试绘制的图层上调用.layoutIfNeeded(),然后将其添加到其超级图层。

    【讨论】:

      【解决方案2】:

      CALayer 可能没有在 CALayer 实际被绘制之前及时缓存内容。

      如果没有看到代码,我建议您在更改该 CALayer 的内容后立即为缺少标签信息的 CALayer 调用 -setNeedsDisplay

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-02
        • 2013-11-28
        • 1970-01-01
        • 2014-06-04
        • 2013-09-11
        • 1970-01-01
        • 2013-02-27
        • 2011-04-20
        相关资源
        最近更新 更多