目标C:检查

时间:2015-08-03 14:22:31

标签: ios objective-c animation

这可能是一个简单的答案,但我无法在任何地方找到任何信息。我有一个动画,可以转换标签的x值。如果某个任务完成,动画会提前停止并发生完成操作。考虑到这一点,有没有办法可以使用动画持续时间来确定计时器是否先用完或者任务是否完成?

我有一个我用来做这个名为taskComplete的布尔值,但是当我重置下一个级别的视图时,完成将布尔值视为false并运行代码。例如,在xcode中是否有一种方法可以执行以下操作:

completion:^(BOOL finished) {
    //boolean is false and animation has lasted the amount asked or greater
    if (!taskComplete && animationDuration > animationTimer) {
        //do this
    }
}

感谢所有帮助!谢谢!

2 个答案:

答案 0 :(得分:1)

有办法如何检索当前的动画状态,虽然我不得不说你不应该这样做(但如果你需要,你能做什么:)

CALayer的方法名为.presentationLayerdocs):

  

此方法返回的图层对象提供了关闭   当前正在屏幕上显示的图层的近似值。   当动画正在进行时,您可以检索此对象和   用它来获取这些动画的当前值。

因此,在该图层上,您可以选择任何属性并针对它运行您的条件。您还可以添加KVO以跟踪任何更改(并通过view.layer.presentationLayer.attribute

进行访问

除此之外,您必须使用核心动画或POPFramework from Facebook更详细地跟踪更改。

希望它有所帮助!

编辑:我忘了提及,如果您需要知道时间,您可以随时将其从当前值和开始/结束值计算为((currentValue - startValue) / (endValue - startValue)) * animationTime,因此无需以不同方式跟踪它。

答案 1 :(得分:0)

正如@Sulthan所说,你永远不应该根据动画的持续时间进行计算。考虑到这一点,我在这里打开了关于同一主题的另一个问题: https://stackoverflow.com/questions/31791748/objective-c-animation-not-stopping