弹出窗口的背景色设置为透明,但是实际上却变成了黑色。

4
我有一个UIViewController覆盖在另一个UIViewController上。它应该显示为带有透明背景的弹出窗口。它正常显示,但背景是黑色的。它是嵌入在UINavigationController中呈现的。 问题在于背景颜色是黑色的,我看不到下面的视图,尽管所有背景颜色都设置为透明。我甚至尝试在呈现控制器时设置背景为透明,但仍然没有效果。在Storyboard中,我将其设置为当前上下文和交叉溶解。视图调试器也没有将任何视图显示为黑色。不确定有什么问题,非常感谢您的帮助!
let vc = UIStoryboard.init(name: "AccountSettings", bundle: nil).instantiateViewController(withIdentifier: "upgradeVCPopup") as! UpgradeVCPopup
let nav = UINavigationController(rootViewController: vc)
nav.view.backgroundColor = .clear
vc.view.backgroundColor = .clear
if let navigationController = self.navigationController {
    navigationController.present(nav, animated: true, completion: nil)
} else {
    self.present(nav, animated: true, completion: nil)
}
2个回答

10
你的黑色背景是因为没有设置UIViewControllerUIModalPresentationStyle。这个参数决定了你的模态视图控制器如何显示。模态视图控制器的默认值为fullScreen。 根据苹果文档,这意味着在你的视图控制器被展示后,之前的视图控制器会被移除,所以你看到的是黑色。如果你想要前一个视图控制器仍然保留并可见,可以将modalPresentationStyle设置为overFullScreen。 根据苹果文档,这个选项允许你在模态视图控制器上方看到下面的内容。 要实现这一点,在展示你的视图控制器之前添加以下行:
vc.modalPresentationStyle = .overFullScreen

这应该会有所帮助。


就是这样,谢谢!我在故事板中正确设置了VC,但完全没有意识到我在编程时错过了导航栏。 - Michael

0

你尝试过设置 nav.view.backgroundColor = .white 吗?如果将 nav.view.backgroundColor = .clear,那么你就是在将 Navigation 窗口的背景设置为透明的(默认的 Nav 窗口背景是黑色)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接