【问题标题】:Is there a way to pause animateWithDuration once it has started?有没有办法在 animateWithDuration 开始后暂停它?
【发布时间】:2011-09-30 01:16:12
【问题描述】:

我正在使用 animateWithDuration 方法为带有歌词的 textView 设置动画,该歌曲会随着歌曲的播放而滚动。它工作正常,但我为歌曲添加了一个暂停按钮,显然当暂停时动画继续滚动。有没有办法暂停这个。我查看了来自 Apple 的类参考,发现有一些延迟方法,但这些方法是在动画开始之前使用的。所以只是好奇是否有一种方法可以在用户暂停/取消暂停歌曲时暂停/重新启动动画。提前致谢。

【问题讨论】:

    标签: iphone ios animation


    【解决方案1】:

    您可以开始一个新的动画,将您的 textView 移动到当前/显示的位置,持续时间:0.0f(按下暂停按钮时),它将取消/跳过上一个动画;-)

    【讨论】:

    • 我考虑过 htis,但它只有在有办法确定正在动画的 textView 的 CGPoint 时才有效,所以我可以在暂停后在该点停止动画并从该点恢复一旦再次按下播放。到目前为止,我还没有找到一个。有没有办法找到正在动画的 textView 最顶部的 CGPoint?
    • 我试过以下代码无济于事... CGPoint scrollPoint = textView.bounds.origin; [UIView animateWithDuration:0 动画:^(void) {[textView setContentOffset:scrollPoint];}];` 也试过`CGPoint scrollPoint = textView.contentOffset; [UIView animateWithDuration:0 动画:^(void) {[textView setContentOffset:scrollPoint];}];` 也试过 [self.view.layer removeAllAnimations];但我怀疑,因为我在 UIView 上调用动画,所以调用层上的删除不会做任何事情......任何其他建议将不胜感激。
    • @CABearsfan 如果我是你,我会使用 NSTimer 而不是 UIAnimatin。更新 NSTimer 运行循环中的位置:scrollPoint=CGPointMake(lastPoint.x,lastPoint.y+1);最后一个点=滚动点;因此,您可以随时停止它;-)
    【解决方案2】:

    您可以计算自动画开始以来经过了多少时间,并计算暂停时的偏移量。 不过应该有一个更简单的解决方案。 可能是drawRect中的NSString drawAtPoint,使用定时器反复调用drawRect来更新位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      相关资源
      最近更新 更多