【发布时间】:2015-02-04 09:15:56
【问题描述】:
我正在编写一个相机应用程序,但在用户点击屏幕时无法显示焦点方块。
我的代码是(快速):
self.focusView.center = sender.locationInView(self.cameraWrapper)
self.focusView.transform = CGAffineTransformMakeScale(2, 2)
self.focusView.hidden = false
UIView.animateWithDuration(0.5, animations: { [unowned self] () -> Void in
self.focusView.transform = CGAffineTransformIdentity
}, completion: { (finished) -> Void in
UIView.animateWithDuration(0.5, delay: 1.0, options: nil, animations: { () -> Void in
self.focusView.alpha = 0.0
}, completion: { (finished) -> Void in
self.focusView.hidden = true
self.focusView.alpha = 1.0
})
})
但是,如果在上一个动画没有完成的情况下连续点击屏幕,新旧动画会混淆,焦点视图会表现得很奇怪,例如它会很快消失。
谁能告诉我如何取消之前的动画,尤其是之前的完成块?
【问题讨论】:
-
尝试使用成员 BOOL 变量并在动画中基于 yes 和 no 尝试对其进行动画处理
-
试试 UIView.setAnimationBeginsFromCurrentState(true);在开始动画之前
-
我相信2018年最好的办法就是使用UIViewPropertyAnimator