【问题标题】:stopping an animation on the spot当场停止动画
【发布时间】:2010-10-04 16:29:44
【问题描述】:

我有一个正在制作动画的 UISLider - 在 91.0 秒的时间内穿过屏幕。 我希望能够停止动画点。

代码:

 [UIView animateWithDuration:91.0
        delay:0.0
        options:UIViewAnimationOptionRepeat|
                    UIViewAnimationOptionAllowUserInteraction|
            UIViewAnimationOptionBeginFromCurrentState
        animations:^{[UIView setAnimationDuration:91.0];
                 [myUISlider setValue:91.0];}
            completion:nil];

    [UIView commitAnimations];
  • 停止动画的一种方法是设置一个新值。但是,我无法在动画期间读取滑块的当前值/位置。访问 mySlider.value 时,我得到目标值(动画将结束的位置,即 91。

我做了一些挖掘,发现了 continuous 标志,它启动了一个动作方法,并且默认设置为 YES。来自开发者参考:

"...如果是,则滑块不断向关联目标的操作方法发送更新事件...".

但是,这里的值还是 91.0...

感谢您的宝贵时间。

你的,

~nir.

【问题讨论】:

    标签: animation ios4 uislider


    【解决方案1】:

    如果您向 UISlider 的图层询问其-presentationLayer,则可以查询该图层的副本以获取近乎实时的动画属性。来自CALayer documentation

    返回包含当前事务开始时所有属性的图层副本,并应用任何活动动画。

    【讨论】:

    • 感谢您的回答 tjw。跟进您的建议,我发现此类提供有关图层本身的信息。例如,我能够提取滑块的 position.x 和 position.y,但不能提取滑块点本身的当前值。想法?
    • 糟糕,我似乎误解了你的问题。也许您可以修改您的问题以显示您如何控制值的动画速度。您可能正在调用 -setValue:animated:,但这会忽略在任何封闭的 UIView 动画块中设置的持续时间。
    • 感谢 TJW,我刚刚重新编辑了帖子并添加了一些代码。我希望现在我想要实现的目标会更清楚。感谢您的宝贵时间。
    猜你喜欢
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2016-03-16
    相关资源
    最近更新 更多