【发布时间】:2019-07-21 21:31:28
【问题描述】:
我的代码使用了一个简单的循环动画,该动画在 5 秒后不会停止。我想要做的就是有一个停止动画的第二个按钮。正如您在我的代码中看到的那样,circle.stopAnimating() 无效。
class VET: UIViewController {
@IBOutlet weak var circle: UIImageView!
var duration = 5
@IBAction func start(_ sender: Any) {
UIView.animate(withDuration: TimeInterval(duration), delay: 0.5, options: [.repeat, .autoreverse, .curveEaseIn, .curveEaseOut], animations: { () -> Void in
let scale = CGAffineTransform(scaleX: 0.25, y: 0.25)
self.circle.transform = scale
print("animation")
}, completion: { _ in
//if finished { or (finished: Bool)
// if isAnimating {
if self.circle.isAnimating {
self.circle.stopAnimating()
print("is animating -- stop animating")
} else {
self.circle.startAnimating()
print("start animating")
}
})
}
@IBAction func stop() {
circle.stopAnimating()
}
【问题讨论】:
-
1.
UIImage start/stopAnimating()与UIView.animate无关。如果您设置图像视图的animationImages属性,它们正在使用。 2.UIView.animate完成块在动画完成之前不会被调用(在这种情况下是 5.5 秒后)。 -
即使经过 5.5 秒也没有任何反应。
-
这个动画无限循环。
-
再次阅读我的第一点。
-
了解如何设置图像视图属性。如果我只想将动画设置为运行 10 秒并停止我将在属性中写入的内容。
标签: ios swift uiimageview uiviewanimation completion