我是iOS编程的新手,我正在尝试创建一个简单的segue,其中源视图和目标视图的子视图都是动画的。
我在我的segue类中访问源视图上的子视图时遇到问题,以便为它们设置动画。在segue期间访问和查看源视图子视图的最简单方法是什么?
以下是我的代码的简化版本。
// Source view controller
class ViewController: UIViewController {
@IBOutlet weak var myButton: UIButton!
// other normal view controller code
}
class mySegue: UIStoryboardSegue {
override func perform() {
UIView.animate(withDuration: 1.0, animations: {
// how do I access and animate myButton?
// source.myButton
})
}
}
答案 0 :(得分:1)
您可以使用此代码:
class MySegue: UIStoryboardSegue {
override func perform() {
UIView.animate(withDuration: 1.0, animations: {
let sourceController = self.source as! ViewController
sourceController.myButton
})
}
}
答案 1 :(得分:0)
另一种选择:如果你想要在离开场景时动画一些东西,你可以在过渡期间制作动画:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
transitionCoordinator?.animate(alongsideTransition: { context in
self.myButton.backgroundColor = .red // animate change of background color during transition
}, completion: nil)
}
另外,作为子类化segue的另一种替代方法,您可以进行自定义转换。参见WWDC 2013 Custom Transitions Using View Controllers。它取决于过渡和相关动画的性质。但这是一个很好的方法来做真正强大和丰富的过渡。