即使设置为清除,弹出窗口也具有黑色背景

Mic*_*ael 2 xcode popup uinavigationcontroller presentmodalviewcontroller swift

我有一个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)
}
Run Code Online (Sandbox Code Playgroud)

Yur*_*hev 6

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

来自苹果文档

UIModalPresentationStyle.fullScreen

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

这意味着在您的视图控制器出现后,先前的视图控制器将被删除。当它被移除时,因为它下面没有任何东西,你会看到黑色。如果您希望之前的视图控制器保留并可见,您可以设置modalPresentationStyleoverFullScreen.

来自 苹果文档

UIModalPresentationStyle.overFullScreen

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

为此,请在显示您的视图控制器之前添加以下行:

vc.modalPresentationStyle = .overFullScreen
Run Code Online (Sandbox Code Playgroud)

这应该有帮助。