これを実行する唯一の方法は、CADisplayLinkを使用して不透明度/回転を手動でアニメーション化し、コアアニメーションを使用せずに値を補間することでした。
startTimestamp = CACurrentMediaTime();
CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self
selector:@selector(animate:)]
[displayLink addToRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
...
- (void)animate:(CADisplayLink *)link {
float duration = 1.0;
float dt = (link.timestamp - startTimestamp)/duration;
// Done?
if (dt > 1.0) {
[link invalidate];
return;
}
// Disable CoreAnimation implicit animations
[CATransaction begin];
[CATransaction setDisableActions:YES];
layer.opacity = dt;
[CATransaction commit];
}