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

Posted

技术标签:

【中文标题】将其设置为清除后,Swift 模态视图背景显示为黑色【英文标题】:Swift modal view background appearing black after setting it to clear 【发布时间】:2017-06-20 21:19:29 【问题描述】:

我正在尝试以模态方式从控制器呈现自定义视图,但是当我这样做时,除了文本字段之外的所有内容的背景都会变成黑色,如 here 所示。 (the intended modal)

这似乎是一个相当普遍的问题,但是我已经实现了大多数类似问题作为答案的代码

这是我在第一个控制器中的 addEvent 方法:

@IBAction func addEvent(_ sender: Any) 
    let newEventViewController = NewEventViewController()
    newEventViewController.view.backgroundColor = UIColor.clear
    newEventViewController.view.isOpaque = false
    navigationController?.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
    navigationController?.present(newEventViewController, animated: true, completion: nil)

任何帮助弄清楚我缺少什么将不胜感激。如果它有所作为,我将使用单独的 xib 文件而不是故事板来创建我的应用程序。

【问题讨论】:

您能提供更多信息吗?你试过self.present ...吗?还设置 self.modalPresentationStyle 通常 isOpaque 和 backgroundColor 应该设置在 viewDidLoad 但我不认为这是你的问题 【参考方案1】:

你需要设置 newEventController 的 modalPresentationStyle 而不是这样的 navigationController:

newEventViewController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext

虽然不需要,但我会从自我而不是像这样的导航控制器呈现:

self.present(newEventViewController, animated: true, completion: nil)

【讨论】:

救了我!谢谢!我在想我应该将此属性添加到视图控制器'viewDidLoad' - 这显然不起作用,感谢代码示例

以上是关于将其设置为清除后,Swift 模态视图背景显示为黑色的主要内容,如果未能解决你的问题,请参考以下文章

为模态视图显示透明背景

使用背景颜色“清除”推送新视图控制器

在 Swift 中显示和关闭模态视图控制器

UIViewController 的动态高度显示为模式弹出窗口

在执行代码之前等待用户关闭模态视图(Swift 2.0)

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