我正在尝试CALayer
使用 a为 a 的不透明度变化设置动画CATransaction
,但它不起作用:
[CATransaction begin];
[CATransaction setAnimationDuration:3];
[CATransaction setCompletionBlock:^{
NSLog(@"ENTERING COMPLETION BLOCK");
}];
NSLog(@"BEGINNING TRANSACTION");
self.opacity = 1;
[CATransaction commit];
进入此代码的不透明度为 0,没有动画。它会立即更改,尽管在完成块显示消息“正在输入完成块”之前事务确实需要 3 秒,正如预期的那样。我知道这种类型的动画不适用于视图的主层,但这里不是这种情况。
如果您想知道,我使用的是 aCATransaction
而不是 a CABasicAnimation
,因为 (1) 我发现代码更易于阅读(和编写),并且 (2) 它使用完成块使链接更容易执行(虽然我'这里不这样做)。
是否有一些我不知道的原因使CATransaction
这种类型的动画不适合?