我有一个显示为对话框的视图,当我希望从父视图中删除它时,我正在设置其不透明度。
我正在使用以下代码通过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类信息后,我找不到任何缓存它的内容。
答案 0 :(得分:6)
您可以尝试设置layer.shouldRasterize = YES;
并查看是否可以提高效果。
但请注意,只要图层内容发生变化,shouldRasterize
就会大大减慢合成速度。所以你应该只为某个动画启用它,然后再禁用它。