【问题标题】:How to get the current animation step from a CAKeyframeAnimation如何从 CAKeyframeAnimation 获取当前动画步骤
【发布时间】:2016-06-06 22:08:59
【问题描述】:

我目前正在创建一个具有两种不同状态的小按钮。每个状态由两个CAShapeLayers 表示,状态之间的转换通过一系列CAKeyframeAnimations/CABasicAnimations 进行动画处理,它们都会改变形状层的路径属性。我的问题是如何动画到从当前动画开始的状态(即在动画时按下按钮)。

通常,我会向表示层询问当前属性值并使用附加动画(完美描述here),但由于这是一个多步动画,我必须弄清楚我当前是哪一步动画,然后链接适当的动画以反转到先前的状态。但这相当棘手(我想让所有动画都为removeOnCompletion=false 并查询动画的时间偏移量以确定当前处于活动状态的动画以及多远)。

不幸的是,将图层速度设置为 0.0 并只为 timeOffset 来回设置动画也不起作用,因为我有在相反方向上表现不同的辅助动画。

为形状图层使用自定义图层属性似乎很麻烦,但我可以更轻松地将进度属性与当前动画步骤匹配。

【问题讨论】:

    标签: ios swift core-animation cakeyframeanimation


    【解决方案1】:

    因此,经过反复试验,我想出了以下“解决方案”:我使用CADisplayLink 获取每一帧的时间更新,并通过从动画开始时的时间戳中减去当前时间戳,我可以得出出经过的动画时间,因此进度(除以animationDuration)。这样我就可以用偏移量开始反向动画。在内部,我根据关键帧动画计算下一帧并调整新持续时间的关键时间。 你可以看到这个here的实现

    【讨论】:

      猜你喜欢
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      相关资源
      最近更新 更多