弹出窗口有黑色背景,即使它设置为清除
Posted
技术标签:
【中文标题】弹出窗口有黑色背景,即使它设置为清除【英文标题】:Popup has black background even though it is set to clear 【发布时间】:2018-09-18 19:04:04 【问题描述】:我有一个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)
【问题讨论】:
【参考方案1】:你有黑色背景的原因是你没有设置你的UIViewController
s UIModalPresentationStyle
。此参数确定您的模态视图控制器如何显示。模态视图控制器的默认值为fullScreen
。
来自Apple Documentation:
UIModalPresentationStyle.fullScreen
演示完成后,属于演示视图控制器的视图将被删除。
这意味着在你的视图控制器出现之后,之前的视图控制器就会被移除。当它被移除时,由于它下面没有任何东西,你会看到黑色。如果您希望之前的视图控制器保持可见,您可以将modalPresentationStyle
设置为overFullScreen
。
来自Apple Documentation:
UIModalPresentationStyle.overFullScreen
演示结束时,演示内容下方的视图不会从视图层次结构中删除。因此,如果呈现的视图控制器没有用不透明的内容填充屏幕,则底层内容会显示出来。
为此,请在呈现您的视图控制器之前添加以下行:
vc.modalPresentationStyle = .overFullScreen
这应该会有所帮助。
【讨论】:
就是这样,谢谢!我在情节提要中的 VC 上正确设置了该设置,但完全没有意识到我在导航中缺少它,因为我是以编程方式创建的。【参考方案2】:您是否尝试过设置nav.view.backgroundColor = .white
通过设置nav.view.backgroundColor = .clear
您将导航窗口的背景设置为清除(导航窗口的默认底部为黑色)
【讨论】:
以上是关于弹出窗口有黑色背景,即使它设置为清除的主要内容,如果未能解决你的问题,请参考以下文章