动画 UIView - 卡在递归动画循环中:Swift
Animating UIView - Stuck in Recursive Animation Loop: Swift
我陷入了动画循环。我有一个名为 [stopBtn
] 的按钮和一个名为 [backgroundView
] 的 UIView。我想从加载 ViewController 到销毁时为 UIView 的背景颜色设置动画。在 viewDidAppear
函数中,我通过写 animateView()
开始脉动
func animateView(){
UIView.animateWithDuration(1.0, animations: {
self.backgroundView.backgroundColor = UIColor.blackColor()
self.view.bringSubviewToFront(self.stopBtn)
}, completion: {
(Completed: Bool) -> Void in
UIView.animateWithDuration(1.0, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
self.backgroundView.backgroundColor = UIColor(red: 39, green: 117, blue: 0, alpha: 1)
self.view.bringSubviewToFront(self.stopBtn)
}, completion: {
(Completed : Bool) -> Void in
self.animateView()
})
})
}
@IBAction func stopBtnPressed(sender: UIButton) {
print("pressed")
}
我的问题是为什么我的 stopBtn
不起作用?我已经知道它卡在了循环中,这就是为什么我希望帮助正确设置动画(可能在另一个线程或其他线程上并保持主线程打开)。
stopBtn
连接到故事板中的另一个 ViewController。我试过创建一个 IBAction 但没有用。我还尝试将 stopBtn
置于子视图 [self.view.bringSubviewToFront(self.stopBtn)
] 的前面。
查看文档,我发现使用 animateWithDuration 会暂时禁用用户对动画视图的交互。如果要启用用户交互,则必须在选项参数中设置 UIViewAnimationOptionAllowUserInteraction 常量。
我陷入了动画循环。我有一个名为 [stopBtn
] 的按钮和一个名为 [backgroundView
] 的 UIView。我想从加载 ViewController 到销毁时为 UIView 的背景颜色设置动画。在 viewDidAppear
函数中,我通过写 animateView()
func animateView(){
UIView.animateWithDuration(1.0, animations: {
self.backgroundView.backgroundColor = UIColor.blackColor()
self.view.bringSubviewToFront(self.stopBtn)
}, completion: {
(Completed: Bool) -> Void in
UIView.animateWithDuration(1.0, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
self.backgroundView.backgroundColor = UIColor(red: 39, green: 117, blue: 0, alpha: 1)
self.view.bringSubviewToFront(self.stopBtn)
}, completion: {
(Completed : Bool) -> Void in
self.animateView()
})
})
}
@IBAction func stopBtnPressed(sender: UIButton) {
print("pressed")
}
我的问题是为什么我的 stopBtn
不起作用?我已经知道它卡在了循环中,这就是为什么我希望帮助正确设置动画(可能在另一个线程或其他线程上并保持主线程打开)。
stopBtn
连接到故事板中的另一个 ViewController。我试过创建一个 IBAction 但没有用。我还尝试将 stopBtn
置于子视图 [self.view.bringSubviewToFront(self.stopBtn)
] 的前面。
查看文档,我发现使用 animateWithDuration 会暂时禁用用户对动画视图的交互。如果要启用用户交互,则必须在选项参数中设置 UIViewAnimationOptionAllowUserInteraction 常量。