gpt4 book ai didi

objective-c - CALayer - 未调用显示方法

转载 作者:行者123 更新时间:2023-11-29 04:51:46 25 4
gpt4 key购买 nike

我正在使用 CoreAnimation 为 iPad 制作一本图画书。我做了类似 Sprite 类(CALayer 子类)的操作,以便能够从 sprite 表加载动画帧。与这里类似的东西:http://mysterycoconut.com/blog/2011/01/cag1/ 。我没有使用图层的委托(delegate)来设置边界和内容矩形(在我的例子中,还有位置),但我直接在 CALayer 子类的 -display 方法中进行设置。

我创建了一个虚拟对象,它工作得很好。当我将代码移动到我的项目中时,我的子类的 -display 方法不再被调用。我已经阅读了 CALayer 和 CoreAnimation 编程指南的文档很多次,但我找不到任何有关何时调用 -display 方法的信息。我只知道它使用模板模式,这意味着,我不应该自己调用它,而是应该调用 [layer setNeedsDisplay],它调用 -display 方法本身。我也尝试这样做,但没有成功。

如果您需要查看一些代码,请告诉我。

有什么想法吗?

更新

我找到了该方法没有被调用的原因。真是尴尬得不值一提:0。不管怎样,我仍然有兴趣知道 -display 方法到底是什么时候被调用的。我注意到我必须创建一个动画才能触发它。如果我只是使用 [layer addSublayer:myCustomLayer] 将图层添加到显示层次结构中,则不会调用该方法。

最佳答案

这就是我做错的事情。我正在创建一个新的图层指针,而不是使用添加到图层层次结构中的指针。

CALayer *layer = nil;

if (animatedLayer == YES)
{
// Here's the problem, I created a new layer pointer instead of using the one before.
AnimatedLayer *layer = [[AnimatedLayer alloc] init];

// more stuff being done to the AnimatedLayer
}
else
{
layer = [[CALayer alloc] init];

// more stuff being done to the CALayer
}

[masterLayer addSublayer:layer];
[layer release];

这么愚蠢的错误,我花了几个小时来调试!我应该多睡一会儿,别再喝那么多咖啡了。

关于objective-c - CALayer - 未调用显示方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8682021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com