UIView.animateWithDuration swift循环动画

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (153)

我对Xcode完全陌生并试图学习Swift。

在ViewController.Swift中,我设法使一个盒子从一个点到另一个点成为动画。我认为这很容易循环播放,所以盒子会动画到一个点然后动画回到它的原始位置,然后再循环。我已经设法将对象移动到某个位置,并在“完成”中将其移回,但这并不会让我循环。这怎么能实现?

我想也许这可以工作,但我真的不知道:

let boxmoves = [CGRect(x: 120, y: 220, width: 100, height: 100), CGRect(x: 120, y: 120, width: 100, height: 100)]
for boxmove in boxmoves {
    coloredSquare.frame = boxmove
}

我怎么能基于设备宽度来对其进行居中(我假设有一些数学参与?)?

Xcode的任何好的新手指定网站推荐?

我的代码:

let coloredSquare = UIView()

coloredSquare.backgroundColor = UIColor.blueColor()

coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100)

self.view.addSubview(coloredSquare)

// found repeate but this will not animate as I want.
//UIView.animateWithDuration(2.0, delay: 0.2, options: UIViewAnimationOptions.Repeat, animations: {
UIView.animateWithDuration(2.0, animations: {

    coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100)

    }, completion: { finished in
        UIView.animateWithDuration(2.0, animations: {
        coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100)
        })
})
提问于
用户回答回答于

SWIFT 3.0更新

UIView.animate(withDuration: 2.0, delay: 0, options: [.repeat, .autoreverse], animations: {

    coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100)

}, completion: nil)

如果出于任何原因希望稍后停止动画,只需使用:

coloredSquare.layer.removeAllAnimations()

扫码关注云+社区

领取腾讯云代金券