【问题标题】:Multiple swift animations in parallel not working并行的多个快速动画不起作用
【发布时间】:2014-10-18 10:06:09
【问题描述】:

我有这段代码为视图中的一些元素(总共 3 个)设置动画。

 for element in elements{          
        if element.value != radians {
            UIView.animateWithDuration(0.99,
                animations: {
                    element.transform = CGAffineTransformMakeRotation(CGFloat(radians))
                }, completion: {
                    finished in
                    element.value = radians
            })
        }
    }

当需要对 2 个或更多元素进行动画处理时(UIView.animateWithDuration 被依次调用 2 次或多次),只有一个在动画,并且动画很不稳定。我知道我应该在动画块中编写所有内容,但我不知道该怎么做。 请帮帮我。

【问题讨论】:

    标签: ios animation swift


    【解决方案1】:

    只需将 for 循环放在动画块内即可。

    UIView.animateWithDuration(0.99, 
      animations: {
        for element in elements {
          if element.value != radians {
              element.transform = CGAffineTransformMakeRotation(CGFloat(radians))
          }
        }
      }, completion: { _ in 
        element.value = radians
      })
    

    【讨论】:

    • 我在想这个,但是可以(安全)吗?
    • 确实如此。为什么不应该呢?这就是它的完成方式。
    • 我以为只有赋值可以写在那个块里。
    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多