ios - 使用 CALayer 的 <CAMediaTiming> 方法延迟隐式动画

标签 ios objective-c core-animation

我正在尝试使用由 CALayer 实现的 CAMediaTiming 协议(protocol)来影响隐式 CALayer 动画的时间。

到目前为止,看来我必须要做

[CATransaction begin];
[CATransaction setAnimationDuration:d];
layer.frame = newFrame;
[CATransaction commit];

layer.timeOffset = -1;

为隐式动画创建 1 秒延迟

不幸的是,这里似乎发生的是非常短暂的动画开始(层移动了一点点),然后弹回原位并等待 1 秒钟,然后才开始实际的动画。

我认为这是由于将 timeOffset 信息传播到渲染树的延迟所致。我试过 [CATransaction flush],但没有找到没有初始口吃的安排。

有没有人成功地使用 CALayer 的 CAMediaTiming 方法来改变隐式动画的时间?

最佳答案

我找到了 http://wangling.me/2011/06/time-warp-in-animation.html在使用 CAMediaTiming 时非常有用。您可能会对关于 timeOffsetbeginTime 的解释特别感兴趣。

关于ios - 使用 CALayer 的 <CAMediaTiming> 方法延迟隐式动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032474/

相关文章:

iOS 6 保存/恢复应用程序状态功能

ios - 如何设置按钮标题的字体 Objective-C

ios - 如何在 Objective-C(iOS) 的 `Google Maps` View 中添加标记

objective-c - 用动画同时隐藏NavBar和TabBar

ios - 使用自动布局空间约束时的剩余空间

ios - CoreBluetooth 外围设备标识符更改

iOS 8 共享扩展无法在设备上运行

ios - 将 UIImage 写入具有 gps 坐标的路径

objective-c - 使用推送动画查看交换

objective-c - 在 iOS 中使用 NSThread 重新触发 CABasicAnimation