带有 timeOffSet 的 CAAnimation

Posted

技术标签:

【中文标题】带有 timeOffSet 的 CAAnimation【英文标题】:CAAnimation with timeOffSet 【发布时间】:2018-03-30 10:23:28 【问题描述】:

我有一个持续时间为 5.0 秒的动画。在播放动画时,我将其暂停在 2.0 秒并做一些其他事情(移动到其他视图控制器、推送、弹出...)。然后我回到这个视图控制器并从第二个 2.0 继续动画。我使用 timeOffSet = 2.0 让它工作顺利,但仍然有一个问题:它有 2 秒剩余,即动画的前 2 秒.....我怎样才能删除它?

带有timeOffSet过程的动画:

【问题讨论】:

写2个动画方法,先调用其他东西,后调用 【参考方案1】:

Duplicated answer

-(void)pauseLayer:(CALayer*)layer

    CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
    layer.speed = 0.0;
    layer.timeOffset = pausedTime;


-(void)resumeLayer:(CALayer*)layer

    CFTimeInterval pausedTime = [layer timeOffset];
    layer.speed = 1.0;
    layer.timeOffset = 0.0;
    layer.beginTime = 0.0;
    CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
    layer.beginTime = timeSincePause;

【讨论】:

以上是关于带有 timeOffSet 的 CAAnimation的主要内容,如果未能解决你的问题,请参考以下文章

什么时候可以使用 CALayer.timeOffset

手动动画(9.2 图层时间)

无法控制 UITableViewCell 的子图层的动画时间

CoreAnimation confusion: CATransaction vs CATransition vs CAAnimationGroup?

CAMediaTiming--beginTimetimeOffset

在给定偏移处开始动画