如何在iOS 13中设置系统背景颜色以呈现视图控制器下方

3
请看下面的图片,我在我的应用程序中呈现了一个视图控制器,屏幕上出现了3个层次:
  1. 黑色,由系统提供
  2. 我的应用程序,呈现的视图控制器,白色
  3. 我的应用程序,展示的视图控制器,白色
我的问题是,第一层不应该是之前运行的应用程序的模糊截屏吗?为什么是黑色的?我能设置颜色吗? screenshot 编辑:事实证明,第一层并不是由系统提供的,而只是应用程序的关键窗口背景!请参见我的下面的答案。

为什么不在呈现新视图控制器之前更改当前视图控制器(或其导航栏)的背景颜色?当您关闭新的视图控制器时,应将背景重置为原始状态。然而,整个方法似乎违反了苹果新视图控制器演示的设计意图。如果您不喜欢背景视图控制器的显示,只需使用全屏呈现新的视图控制器即可。 - Christopher Graf
抱歉我没有表述清楚,我已经更新了问题,我说的是系统后台而不是呈现层。无论如何感谢您的回复。 - Hammerhead
看看这个教程,它可能会解决你的问题。 - Christopher Graf
感谢您的输入,实际上与状态栏无关,而且只发生在iOS 13中,请查看我的下面的答案。 - Hammerhead
2个回答

7

我成功解决了这个问题,方法是设置关键窗口的背景颜色,例如:

// inside appDelegate's didFinishLaunchingWithOptions
// The first layer will be white now
window?.backgroundColor = UIColor.white

如果窗口和其他组件是以编程方式创建的,则AppDelegate无法工作。 - J A S K I E R

0
在根视图控制器的 viewWillAppear 方法中,您需要通过以下代码重置其背景颜色:
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.view.backgroundColor = .white
}

在你推出新视图控制器的位置放置这个:

self.navigationController?.pushViewController(anotherVC, completion: {
            self.view.backgroundColor = .black
        })

抱歉我没有表述清楚,我已经更新了问题,我说的是系统后台而不是呈现层,无论如何感谢你的回答! - Hammerhead

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接