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
将大大减慢合成速度。 所以你应该只对某个动画启用它,然后再禁用它。
上一篇: CALayer/CABasicAnimation opacity animation cache?
下一篇: Animate custom CALayer properties inside a CATransaction