要利用一句话完成iOS中的转场动画,我们需要使用UIViewController中的transition(from:to:duration:options:animations:completion:)
方法。这个方法使得在两个UIViewController之间的转场非常简单,可以通过一个布尔值来控制是否需要动画。
以下是完成转场动画的完整攻略:
步骤一:准备转场需要的UIViewController
首先我们需要准备两个UIViewController,即传出VC和传入VC。在实际开发中这两个VC的准备方式很多,包括Storyboard、Nib等等方式。这里举例创建两个VC,并使用一个NavigationController来管理它们。
代码如下:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "传出 VC"
}
@IBAction func pushToNextVC(_ sender: UIButton) {
let nextVC = NextViewController()
self.navigationController?.pushViewController(nextVC, animated: true)
}
}
class NextViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "传入 VC"
self.view.backgroundColor = .red
}
}
步骤二:实现转场动画
下一步是实现转场动画。我们可以使用UIView动画实现转场动画。具体实现方式是在transition(from:to:duration:options:animations:completion:)
方法的animations:
参数中进行转场动画的操作。
这里示例实现了一个dismiss的转场动画,如果想要使用present进行转场,只需要把transition(from:to:duration:options:animations:completion:)
中的 fromVC.present(toVC, animated: false, completion: nil)
改成fromVC.dismiss(animated: false, completion: nil)
即可。
代码如下:
extension UIViewController {
// 实现 dismiss 转场动画
// 如果想要实现 present 转场动画,只需要把 fromVC.present(toVC, animated: false, completion: nil) 改成 fromVC.dismiss(animated: false, completion: nil) 即可
func presentVCWithDismissStyle(_ toVC: UIViewController) {
guard let fromVC = self.presentingViewController else { return }
fromVC.dismiss(animated: false, completion: nil)
fromVC.transition(from: fromVC.view, to: toVC.view, duration: 1.0, options: [.transitionFlipFromLeft], animations: {
// 转场动画期间的操作
}) { (finished) in
toVC.modalPresentationStyle = .fullScreen
fromVC.present(toVC, animated: false, completion: nil)
}
}
}
上面的扩展函数实现了dismiss的转场动画,当调用这个函数的时候,会自动进行dismiss转场动画并且打开传入的toVC。
接下来我们修改ViewController
中的pushToNextVC
方法来使用我们刚刚实现的转场动画:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "传出 VC"
}
@IBAction func pushToNextVC(_ sender: UIButton) {
let nextVC = NextViewController()
self.presentVCWithDismissStyle(nextVC)
}
}
步骤三:查看效果
我们已经完成了所有准备工作和代码实现了。现在可以运行程序,点击按钮,就能看到我们刚刚实现的dismiss转场动画在运行了。
通过以上的步骤和代码示例,我们可以看到,在iOS中使用一句话完成转场动画也是非常简单的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:iOS如何利用一句话完成转场动画 - Python技术站