CALayer / CABasicAnimation不透明度动画缓存?

时间:2011-05-05 09:49:38

标签: iphone objective-c core-animation

我有一个显示为对话框的视图,当我希望从父视图中删除它时,我正在设置其不透明度。

我正在使用以下代码通过CABasicAnimation更改其不透明度:

CALayer *opacityOutLayer = sheetView.layer;
CABasicAnimation *fadeOutAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeOutAnimation.fromValue = [NSNumber numberWithFloat:1.0];
fadeOutAnimation.toValue = [NSNumber numberWithFloat:0.0];
fadeOutAnimation.duration = 0.255;
[opacityOutLayer addAnimation:fadeOutAnimation forKey:@"opacity"];

这在模拟器中看起来很完美,但在设备上却不是很流畅。有没有办法缓存动画(比如使用UIView转换缓存:是)?

我确信这很简单,但在搜索文档和CALayer类信息后,我找不到任何缓存它的内容。

1 个答案:

答案 0 :(得分:6)

您可以尝试设置layer.shouldRasterize = YES;并查看是否可以提高效果。

但请注意,只要图层内容发生变化,shouldRasterize就会大大减慢合成速度。所以你应该只为某个动画启用它,然后再禁用它。