Popup具有黑色背景,即使它已设置为清除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Popup具有黑色背景,即使它已设置为清除相关的知识,希望对你有一定的参考价值。

我有一个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)
}
答案

你有黑色背景的原因是你没有设置你的UIViewControllers UIModalPresentationStyle。此参数确定您的模态视图控制器的显示方式。模态视图控制器的默认值是fullScreen

来自Apple Documentation

UIModalPresentationStyle.fullScreen

在演示完成后,将删除属于呈现视图控制器的视图。

这意味着在显示视图控制器后,将删除先前的视图控制器。当它被移除时,由于它下面没有任何东西,你会看到一种黑色。如果您希望以前的视图控制器保持可见,您可以将modalPresentationStyle设置为overFullScreen

来自Apple Documentation

UIModalPresentationStyle.overFullScreen

演示文稿完成后,不会从视图层次结构中删除所显示内容下方的视图。因此,如果呈现的视图控制器没有用不透明的内容填充屏幕,则底层内容会显示出来。

为此,请在呈现视图控制器之前添加以下行:

vc.modalPresentationStyle = .overFullScreen

这应该有所帮助。

另一答案

您是否尝试过设置nav.view.backgroundColor = .white通过设置nav.view.backgroundColor = .clear,您要将导航窗口的背景设置为清除(导航窗口的默认基准为黑色)

以上是关于Popup具有黑色背景,即使它已设置为清除的主要内容,如果未能解决你的问题,请参考以下文章

将其设置为清除后,Swift 模态视图背景显示为黑色

Eclipse的背景设置(黑色系)

PickerView 在黑色背景下不可见

白色背景的应用程序图标仅在 iOS 上显示为黑色

如何使 UITabbar 透明以便超级视图的背景图像可见?

不用代码,如何设置android模拟器的背景色默认为黑色,