【发布时间】:2016-08-22 15:16:42
【问题描述】:
我在动画淡入和淡出方面遇到问题。
我有一个简单的设置,在故事板上我有一个名为 myView 的 UIView。
我想做的是当用户触摸屏幕时淡入myView,当用户停止触摸屏幕时淡出myView。我可以使用下面的代码来实现。淡入淡出发生在 5 秒内。
但是,当用户在淡入或淡出动画中途开始触摸或停止触摸屏幕时,就会出现问题。
例如,当用户停止触摸屏幕时,不是淡入动画优雅地停止myView 淡入在其当前位置并以淡出动画反转,实际发生的是myView alpha 在开始淡出之前跳转到 1.0。
问题:
需要对以下代码进行哪些更改以确保每个新的 动画,淡入或淡出,中断当前淡入动画 发生在
myView并从当前的alpha开始 之前的淡入淡出动画?
代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
self.myView.alpha = 0
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
UIView.animateWithDuration(5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
self.myView.alpha = 1
}, completion: nil)
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
UIView.animateWithDuration(5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
self.myView.alpha = 0
}, completion: nil)
}
}
【问题讨论】:
-
请原谅我的咆哮,但到底为什么有人会否决这个问题?它精美,内容丰富且清晰。这正是在 Stack Overflow 上提问的方法。这是一个模型问题。
-
谢谢,谢谢。我尝试尽可能清晰地组织我提出的问题。
-
当然。不要因投反对票而气馁。
标签: ios swift animation optimization uiview