【问题标题】:issue in pausing and resuming animation in iosios中暂停和恢复动画的问题
【发布时间】:2013-05-27 07:25:05
【问题描述】:

我正在使用来自 Apple 的以下代码来暂停和恢复动画。

当点击暂停按钮时,我首先暂停动画然后显示一个弹出窗口。单击弹出窗口中的播放按钮时,我首先删除弹出窗口然后恢复动画。我面临的问题是有时它无法恢复。动画保持暂停。当我快速地反复暂停和恢复动画而没有延迟时,就会发生这种情况。

- (void)pauseAnimation:(CALayer *)layer
{
    if (m_pCustomImageBtnObj != nil)
    {
        CFTimeInterval pausedTime =
            [layer convertTime:CACurrentMediaTime() fromLayer:nil];

        layer.speed = 0.0;
        layer.timeOffset = pausedTime;
    }
}

- (void)resumeAnimation
{
    if (m_pCustomImageBtnObj != nil)
    {
        CFTimeInterval pausedTime = [m_pCustomImageBtnObj.layer timeOffset];
        m_pCustomImageBtnObj.layer.speed = 1.0;
        m_pCustomImageBtnObj.layer.timeOffset = 0.0;
        m_pCustomImageBtnObj.layer.beginTime = 0.0;

        CFTimeInterval timeSincePause =
            [m_pCustomImageBtnObj.layer convertTime:CACurrentMediaTime()
                                          fromLayer:nil] - pausedTime;

        m_pCustomImageBtnObj.layer.beginTime = timeSincePause;
    }
}

【问题讨论】:

    标签: ios animation cabasicanimation


    【解决方案1】:

    我认为您必须检查动画是否已经在当前事件循环期间恢复,或者是否确实发生了暂停。将此条件添加到您的resumeAnimation

    - (void)resumeAnimation
    {
        if (m_pCustomImageBtnObj != nil)
        {
            CFTimeInterval pausedTime = [m_pCustomImageBtnObj.layer timeOffset];
            if (pausedTime != 0) { // check if resume is called before.
                m_pCustomImageBtnObj.layer.speed = 1.0;
                m_pCustomImageBtnObj.layer.timeOffset = 0.0;
                m_pCustomImageBtnObj.layer.beginTime = 0.0;
    
                CFTimeInterval timeSincePause =
                [m_pCustomImageBtnObj.layer convertTime:CACurrentMediaTime()
                                              fromLayer:nil] - pausedTime;
    
                m_pCustomImageBtnObj.layer.beginTime = timeSincePause;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      • 2014-04-17
      • 2012-04-17
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      相关资源
      最近更新 更多