【发布时间】:2011-09-27 23:43:34
【问题描述】:
我想知道如何为 CALayer 的边界设置动画,因此,在每次边界更改时,图层都会调用 drawInContext:。我在我的 CALayer 子类上尝试了以下两种方法:
- 将
needsDisplayOnBoundsChange设置为YES - 为 +
(BOOL)needsDisplayForKey:(NSString*)key为bounds键返回YES
都不行。 CALayer 似乎决定使用图层的原始内容并根据contentsGravity 简单地缩放它们(我认为这是为了性能。)他们是解决这个问题的方法还是我遗漏了一些明显的东西?
编辑:而且,顺便说一句,我注意到我的自定义 CALayer 子类没有调用 initWithLayer: 来创建 presentationLayer - 很奇怪。
提前致谢, 山姆
【问题讨论】:
-
另一件不起作用的事情:继承和覆盖
setFrame、setBounds和setPosition。动画期间不会调用它们。 -
我不太了解你。你想动画什么?只是CALayer的界限还是别的什么?边界动画是非常简单的任务,帧动画 - 更复杂。
-
想象您的图层包含类似按钮的东西,具有复杂但与大小无关的边框图形。如果您将其设置为双倍宽度,它将使用位图缩放进行动画处理,在整个动画中变得拉伸和像素化,即使您有
needsDisplayOnBoundsChangeYES。只有最后一帧会被drawInContext:正确渲染。
标签: iphone objective-c core-animation calayer bounds