CALayer / CABasicAnimation непрозрачность кеша анимации? - PullRequest
3 голосов
/ 05 мая 2011

У меня есть вид, который отображается в виде диалога, и я анимирую его непрозрачность, когда хочу, чтобы он был удален из родительского вида.

Я использую следующий код для изменения его непрозрачности с помощью 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 Ответ

6 голосов
/ 05 мая 2011

Вы можете попробовать установить layer.shouldRasterize = YES; и посмотреть, не улучшит ли это производительность.

Но учтите, что shouldRasterize значительно замедлит компоновку, как только содержимое вашего слоя изменится.Поэтому вы должны включить его только для определенной анимации, а затем снова отключить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...