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

我有一个显示为对话框的视图,当我想将它从父视图中删除时,我将其不透明度设置为动画。

我使用下面的代码通过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转换缓存:YES)?

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


你可以尝试设置layer.shouldRasterize = YES; 并看看是否改善了性能。

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

链接地址: http://www.djcxy.com/p/74179.html

上一篇: CALayer/CABasicAnimation opacity animation cache?

下一篇: Animate custom CALayer properties inside a CATransaction