UIViewController 自动呈现在全屏呈现之上

UIViewController automatic presentation on top of full screen presentation

我有几个 UIViewController,它们使用 modalPresentationStyle = .fullScreen 相互叠加显示。我想使用 .automatic 样式在顶部显示另一个。这工作正常,但没有预期的卡片式样式(下面的视图控制器缩小了)。有什么办法可以实现这种风格吗?

我尝试将当前视图控制器设为根视图控制器:

UIApplication.shared.keyWindow?.rootViewController = self.navigationController

这部分有效,但我最终得到了一个奇怪的白色空白,而不是纸牌后面预期的黑色深渊。我尝试将 window 的背景颜色明确设置为黑色:

UIApplication.shared.keyWindow?.backgroundColor = .black

然而,这并没有改变任何东西。

感谢@de。对于使用 UI 调试器的想法。我能够使用以下代码解决此样式问题:

let window = UIApplication.shared.keyWindow
window?.rootViewController = self.navigationController
window?.subviews.last?.backgroundColor = .black

修改根视图控制器时,系统似乎创建了视图控制器的副本并在其后抛出一个UITransitionView。这个过渡视图是一种清晰的颜色,允许来自原始视图控制器的颜色通过。我必须将过渡视图的颜色设置为黑色(window 的最后一个子视图)。