animateWithDuration 的问题
Issues with animateWithDuration
像许多其他人一样,我正在努力让 animateWithDuration 工作。下面的代码是我尝试 运行 的一个小测试。我想要做的是在后面添加一个 UIView,淡出顶部的 UIView,然后将其删除。问题是淡入淡出动画不会持续整个 10 秒的长度(它实际上会立即完成),尽管完成块会根据需要在 10 秒后执行。
有没有人知道我做错了什么。我是初学者,所以如果我忽略了一些非常简单的事情,我提前道歉。
谢谢!
import UIKit
class ViewController: UIViewController {
@IBOutlet var graphView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
graphView.addSubview(createView(UIColor.greenColor()))
}
func createView(color: UIColor) -> UIView {
let viewToReturn = UIView(frame: CGRectMake(0, 0, 320, 354))
viewToReturn.backgroundColor = color
return viewToReturn
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func zoomIn() {
let viewToRemove = graphView.subviews[0] as UIView
graphView.addSubview(createView(UIColor.redColor()))
UIView.animateWithDuration(10.0, animations: {
println("Runs")
viewToRemove.alpha = 0.0
}, completion: {(bool) in
if bool {
viewToRemove.removeFromSuperview()
println("End")
}
})
}
}
您正在将新 subview
添加到旧 subview
之上。当你调用 addSubView
函数时,新的子视图被添加到旧的之上。这就是动画更改不可见的原因。尝试添加
self.view.bringSubviewToFront(viewToRemove)
在开始动画之前。
或者您可以直接在旧的 using 下面添加新的子视图。
self.view.insertSubview(createView(UIColor.redColor()), belowSubview: viewToRemove)
像许多其他人一样,我正在努力让 animateWithDuration 工作。下面的代码是我尝试 运行 的一个小测试。我想要做的是在后面添加一个 UIView,淡出顶部的 UIView,然后将其删除。问题是淡入淡出动画不会持续整个 10 秒的长度(它实际上会立即完成),尽管完成块会根据需要在 10 秒后执行。
有没有人知道我做错了什么。我是初学者,所以如果我忽略了一些非常简单的事情,我提前道歉。
谢谢!
import UIKit
class ViewController: UIViewController {
@IBOutlet var graphView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
graphView.addSubview(createView(UIColor.greenColor()))
}
func createView(color: UIColor) -> UIView {
let viewToReturn = UIView(frame: CGRectMake(0, 0, 320, 354))
viewToReturn.backgroundColor = color
return viewToReturn
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func zoomIn() {
let viewToRemove = graphView.subviews[0] as UIView
graphView.addSubview(createView(UIColor.redColor()))
UIView.animateWithDuration(10.0, animations: {
println("Runs")
viewToRemove.alpha = 0.0
}, completion: {(bool) in
if bool {
viewToRemove.removeFromSuperview()
println("End")
}
})
}
}
您正在将新 subview
添加到旧 subview
之上。当你调用 addSubView
函数时,新的子视图被添加到旧的之上。这就是动画更改不可见的原因。尝试添加
self.view.bringSubviewToFront(viewToRemove)
在开始动画之前。
或者您可以直接在旧的 using 下面添加新的子视图。
self.view.insertSubview(createView(UIColor.redColor()), belowSubview: viewToRemove)