我有一个显示为对话框的视图,当我想将其从父视图中移除时,我正在设置其不透明度的动画。
我正在使用以下代码通过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类信息之后,我找不到任何东西来缓存它。

最佳答案

您可以尝试设置layer.shouldRasterize = YES;,看看这是否会提高性能。
但是请注意,一旦层的内容发生变化,shouldRasterize将大大减慢合成速度。因此,您应该只为某个动画启用它,然后再次禁用它。

关于iphone - CALayer/CABasicAnimation不透明度动画缓存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5895694/

10-08 21:38