CALayers第一次抽出时没有显示

时间:2010-08-10 01:13:30

标签: cocoa core-animation core-plot

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

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

http://imgur.com/J0VDs.png

请注意,在顶部图表上,缺少多个标签。如果我切换回原始标签,然后再次转到第二个标签,每次都很好。我已经放置了各种诊断日志记录语句并确定了:

  1. 在创建图表之前,视图处于清醒状态;和
  2. 正在调用每个标签的drawInContext:方法,包括缺少的标签。事实上,轴标签是最后渲染的东西之一,所以我希望它们能够显示是否有任何东西,并且一些缺失的标签会在现有的之前(和之前)呈现。
  3. 因为渲染似乎正在向前发展,并且因为这个事情很好地“第二次”,所以我怀疑问题在于我是如何将它连接到视图或我的时间那里,而不是Core Plot本身(或者,例如,在剪辑中)。不过,我对如何调试这个问题缺乏想法,并希望听到任何有类似问题经验的人的说法。

    谢谢!

2 个答案:

答案 0 :(得分:0)

CALayer可能无法在实际绘制CALayer之前及时缓存内容。

如果您没有看到代码,我建议您在更改了该CALayer的内容后立即尝试为CALayer调用缺少标签信息的{{1}}。

答案 1 :(得分:0)

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

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