gpt4 book ai didi

ios - 如何使用 ModalView 推送 ViewController?

转载 作者:行者123 更新时间:2023-11-28 07:38:26 27 4
gpt4 key购买 nike

我如何将呈现模态视图 (MV) 的 UIViewController (VC) 推送到具有单个从左到右过渡动画的屏幕?

我试过:

  • 设置 MV 的模态过渡样式,然后将两个 Controller 添加到导航 Controller 的 viewControllers 中。然而,这会导致 MV 只是一个 Controller ,与堆栈中的任何其他 Controller 一样被解散。

  • 我试过从没有动画的 VC 中呈现 MV,然后将 VC 添加到 viewControllers 并按上述方式呈现堆栈。这导致当开始向 VC 过渡时,MV 会立即呈现,而 VC 本身会按预期动画显示到屏幕上。例如。 MV滑入时不跟随VC。

  • 我曾尝试在启用动画的情况下从 VC 呈现 MV,但这会导致两个过渡:首先 VC 以动画方式显示到屏幕,然后 VC 向上滑动。

我没有想法,但我想要一个 native 和干净的解决方案:当 VC 完全被 MV 覆盖时,如何通过单个正常的从左到右的插入转换到 VC?

重点是MV配合VC做动画; MV 会出现并表现得像一个全屏 subview ,但当它被关闭时,它会像任何其他模态视图 Controller 一样在屏幕外动画。

最佳答案

这个问题有很多解决方案。我认为 UIPresentationController 可以在这里提供重要的线索。

我尽量让答案尽可能简单。您可以根据需要更改参数甚至子类化 UIPresentationController 以实现完整的动画。

         import UIKit


//Green
class TransViewController: UIViewController {

// MARK: - Navigation


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
let dest = segue.destination
let nextVC = storyboard?.instantiateViewController(withIdentifier: "modelViewController")
if let myPresenter = dest.presentationController{
myPresenter.presentedView!.addSubview(nextVC!.view)
nextVC!.view.center = CGPoint.init(x: nextVC!.view.center.x + nextVC!.view.frame.width , y: nextVC!.view.center.y)
UIView.animate(withDuration: 0.5, animations: {
nextVC!.view.center = self.view.center
}) { (success) in
dest.present(nextVC!, animated: false, completion: nil)
}
}
}
}


//Yellow ; "modelViewController"

class ModelViewController: UIViewController {
@IBAction func click(_ sender : UIButton){
self.dismiss(animated: true, completion: nil)
}
}

enter image description here

关于ios - 如何使用 ModalView 推送 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52853912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com