我正在尝试实现一个翻页动画——当用户浏览页面的速度不是太快时,它会起作用。
我的代码如下所示:
[CATransaction begin];
[CATransaction setAnimationDuration:duration];
[CATransaction setCompletionBlock:^{
if (pageDifference == 1 && setDelegate) {
[self cleanupFlip];
self.animationInProgress = NO;
}
}];
flipAnimationLayer.transform = endTransform;
[CATransaction commit];
是endTransform
a CATransform3DIdentity
,正如我所说,它工作正常。我cleanupFlip
正在为下一页准备屏幕截图,这使我能够执行翻页动画。我正在制作的屏幕截图似乎是问题所在;一旦用户点击快速浏览页面,动画就不会发生,但页面只是改变 - 没有翻页动画。我通过设置一个animationInProgress
避免在旧动画完成之前开始下一个动画的标志得到了改进。
我不明白的是:我希望工作得很好,因为我animationInProgress
在动画的最后设置了标志,所以一切都应该为下一次运行做好准备——但它不是......
在模拟器上我可以比在设备上更快地点击——在那里我必须等待一秒钟才能开始下一页。
如果不制作屏幕截图(例如,仅使用空图像),一切都会按预期工作。cleanupFlip
如果需要一些时间,这似乎是个问题。
有什么想法可以让我完成这项工作吗?
非常感谢!