ios – 使用一个动画关闭并呈现模态视图控制器

ios – 使用一个动画关闭并呈现模态视图控制器,第1张

概述问题是我不知道如何解雇和呈现只有一个过渡动画的视图控制器. 我的故事板结构是: 我们可以说A控制器是在NavigationController之后,B是Startup引用,C是TabBar ViewController. B和C都以模态方式呈现交叉溶解过渡. 当用户登录到应用程序(来自B)时,C控制器以模态方式呈现,具有翻转水平过渡.当用户注销(来自C)时,B以相同的方式呈现. 在A控制器上,我根 问题是我不知道如何解雇和呈现只有一个过渡动画的视图控制器.

我的故事板结构是:


我们可以说A控制器是在NavigationController之后,B是Startup引用,C是Tabbar VIEwController. B和C都以模态方式呈现交叉溶解过渡.

当用户登录到应用程序(来自B)时,C控制器以模态方式呈现,具有翻转水平过渡.当用户注销(来自C)时,B以相同的方式呈现.
在A控制器上,我根据用户是否记录执行直接segue到B或C.

我的问题是如果我不从B或C中解除以前的视图控制器,那么该控制器就会泄露.相反,如果我解除它,则在呈现目标控制器(B或C)之前显示A.

是否可以仅显示“水平翻转”和“查看”视图?

解决方法 我对这个问题的解决方案是替换当前的rootVIEwController,支持不同的转换:

static func replaceRootVIEwController(with vIEwController: UIVIEwController,Transition: UIVIEwAnimationoptions,completion: (() -> ())? = nil) {            if Transition == .TransitionCrossdissolve {        let overlayVIEw = UIScreen.main.snapshotVIEw(afterScreenUpdates: false)        vIEwController.vIEw.addSubvIEw(overlayVIEw)        UIApplication.shared.keyWindow?.rootVIEwController = vIEwController        UIVIEw.animate(withDuration: 0.65,delay: 0,options: Transition,animations: {            overlayVIEw.Alpha = 0        },completion: { finished in            overlayVIEw.removeFromSupervIEw()            if let completion = completion{                completion()            }        })    } else {        _ = vIEwController.vIEw        UIVIEw.Transition(with: UIApplication.shared.keyWindow!,duration: 0.65,animations: {            UIApplication.shared.keyWindow?.rootVIEwController = vIEwController        }){_ in            if let completion = completion {                completion()            }        }    }}
总结

以上是内存溢出为你收集整理的ios – 使用一个动画关闭并呈现模态视图控制器全部内容,希望文章能够帮你解决ios – 使用一个动画关闭并呈现模态视图控制器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1073011.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存