gpt4 book ai didi

ios - 如何以模态方式呈现透明的 UINavigationController + root?

转载 作者:搜寻专家 更新时间:2023-11-01 06:40:55 24 4
gpt4 key购买 nike

在我的 TabBarController 中,我将 UINavigationController 作为模态呈现。一旦我展示它,我希望一切都是透明的(包括导航栏)。但是,我希望根 Controller 之后的所有内容都是不透明的。

            let transVC = self.storyboard?.instantiateViewControllerWithIdentifier("TransparentViewController") as! TransparentViewController
transVC.delegate = self
transVC.view.backgroundColor = UIColor.clearColor()
transVC.modalPresentationStyle = .CurrentContext
self.navController = UINavigationController(rootViewController: transVC)
self.navController?.modalPresentationStyle = .CurrentContext
self.presentViewController(self.navController!, animated: false, completion: nil)

稍后,我会将其他 View Controller 压入堆栈。我希望它们不透明。

let messageVC = self.storyboard?.instantiateViewControllerWithIdentifier("MessagesViewController") as! MessagesViewController
self.navController!.pushViewController(messageVC, animated: false) //should be opaque

如果没有确定的方法,也许我们可以截取应用程序的屏幕截图并将其设置为背景,作为解决方法?我该怎么做?

最佳答案

不,对于模态呈现的 View Controller 具有透明背景来说,截屏不是必需的。只需使用 .OverFullScreen.OverCurrentContext 的呈现样式呈现 segue,而不是 .CurrentContext,并确保 View Controller 具有清晰的彩色背景。

此外,请确保您正在设置导航 Controller 的 modalPresentation 样式,因为这是您要呈现的样式,因此模态转场将使用的样式:

navController?.modalPresentationStyle = .OverFullScreen

自动(取消)隐藏导航栏

为了在导航 Controller 的 Root View Controller 上隐藏导航栏,我将 Root View Controller 子类化,以便在它出现时隐藏导航栏。当它消失时,导航栏应该是未隐藏的。

在 TransVC 中:

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: true)
}

因为可以动画,setNavigationBarHiddenpushViewController 无缝集成。或者,您可以将取消隐藏导航栏的行移动到您正在呈现的 View Controller 中的 viewWillAppear 方法。

关于ios - 如何以模态方式呈现透明的 UINavigationController + root?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529271/

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