像许多其他人一样,我努力让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")
}
})
}
}
答案 0 :(得分:0)
您要在旧subview
的顶部添加新的subview
。当您调用addSubView
函数时,新的子视图将添加到旧的子视图之上。这就是动画更改不可见的原因。尝试添加
self.view.bringSubviewToFront(viewToRemove)
在开始动画之前。
或者您可以直接在旧使用下添加新的子视图。
self.view.insertSubview(createView(UIColor.redColor()), belowSubview: viewToRemove)