gpt4 book ai didi

ios - 使自定义 View Controller 覆盖导航栏

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

我在主视图 Controller 上显示自定义弹出窗口。为此,我在 Storyboard中创建了一个 View Controller (如图所示),对应的类如下。

enter image description here

class PopUpViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.black.withAlphaComponent(0.7)
self.showAnimate()
}

func showAnimate()
{
self.view.alpha = 1.0
}

func removeAnimate()
{
UIView.animate(withDuration: 0.0, animations: {
self.view.alpha = 0.0;
}, completion:{(finished : Bool) in
if (finished) {
self.view.removeFromSuperview()
}
});
}
}

然后在我的主视图 Controller 中,我在单击按钮时显示此弹出窗口,如下所示:

let popOverVC = UIStoryboard(name: "MainViewController", bundle: nil).instantiateViewController(withIdentifier: "popup") as! PopUpViewController
self.addChildViewController(popOverVC)
popOverVC.view.frame = self.view.bounds
self.view.addSubview(popOverVC.view)
popOverVC.didMove(toParentViewController: self)

添加弹出窗口时,这会使主视图 Controller 的背景变黑,不透明度为 70%。如何让导航栏也有同样的背景效果?

我试过更新:

self.view.window?.backgroundColor = UIColor.black.withAlphaComponent(0.7)

self.navigationController?.navigationBar.backgroundColor = UIColor.black.withAlphaComponent(0.7)

在 viewDidLoad() 中但没有工作。有什么可能的解决方案吗?

最佳答案

如果我理解正确,您将 popOverVC 作为 subview 添加到嵌入在 UINavitationController 中的 mainViewController 的 View 中。如果是这种情况,那么 popOverVC 不覆盖 navigationBar 是合乎逻辑的,因为 navigationBar 是 navigationController 的 subview ,而不是 mainViewController 的 subview 。为了能够覆盖导航栏,您必须将 popOverVC 添加到 navigationController:

// to make things a bit easier working with the optional self.navigationController
guard let navController = self.navigationController else { return }

let popOverVC = UIStoryboard(name: "MainViewController", bundle: nil).instantiateViewController(withIdentifier: "popup") as! PopUpViewController
navController.addChildViewController(popOverVC)
popOverVC.view.frame = navController.view.bounds
navController.view.addSubview(popOverVC.view)
popOverVC.didMove(toParentViewController: navController)

关于ios - 使自定义 View Controller 覆盖导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49032933/

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