我正在写一个相机应用程序,当用户点击屏幕时显示焦点方块有问题.
我的代码是(快速):
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
})
})
Run Code Online (Sandbox Code Playgroud)
但是,如果在前一个动画没有完成时连续点击屏幕,则新旧动画会混淆,焦点视图会表现得很奇怪,例如它会很快消失.
谁能告诉我如何取消以前的动画,特别是之前的完成块?
Jag*_*een 36
您可以使用user方法removeAllAnimations停止动画
使用下面的代码替换您的代码
self.focusView.center = sender.locationInView(self.cameraWrapper)
self.focusView.transform = CGAffineTransformMakeScale(2, 2)
self.focusView.hidden = false
self.focusView.layer.removeAllAnimations() // <<==== Solution
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
})
})
Run Code Online (Sandbox Code Playgroud)
参考:链接

| 归档时间: |
|
| 查看次数: |
17768 次 |
| 最近记录: |