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 的最后一个子视图)。
我有几个 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 的最后一个子视图)。