如何在segue

时间:2017-01-20 20:24:15

标签: ios swift

我是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
        })
    }
}

2 个答案:

答案 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。它取决于过渡和相关动画的性质。但这是一个很好的方法来做真正强大和丰富的过渡。