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)
你有黑色背景的原因是你没有设置你的UIViewControllers UIModalPresentationStyle。此参数确定您的模态视图控制器的显示方式。模态视图控制器的默认值为fullScreen。
来自苹果文档:
UIModalPresentationStyle.fullScreen
演示完成后,将删除属于演示视图控制器的视图。
这意味着在您的视图控制器出现后,先前的视图控制器将被删除。当它被移除时,因为它下面没有任何东西,你会看到黑色。如果您希望之前的视图控制器保留并可见,您可以设置modalPresentationStyle为overFullScreen.
来自 苹果文档:
UIModalPresentationStyle.overFullScreen
演示完成时,不会从视图层次结构中删除所呈现内容下方的视图。因此,如果呈现的视图控制器没有用不透明的内容填充屏幕,则底层内容会显示出来。
为此,请在显示您的视图控制器之前添加以下行:
vc.modalPresentationStyle = .overFullScreen
Run Code Online (Sandbox Code Playgroud)
这应该有帮助。
| 归档时间: |
|
| 查看次数: |
1861 次 |
| 最近记录: |