【发布时间】:2018-06-12 15:30:15
【问题描述】:
我有一个具有以下视图架构的应用程序:
UITabBarController > UISplitViewController > UINavigationController > UIViewController
\
> UINavigationController > UIViewController
每当我将嵌入在导航控制器中的视图控制器作为详细视图推送时,我都会看到主导航栏后面出现一个奇怪的非彩色视图。当我的应用程序处于明暗模式时会发生这种情况,如下面的屏幕截图所示。
我在测试应用程序中重新创建了相同的视图架构,但我没有看到颜色偏色的视图出现,所以我不确定是什么原因造成的。
这是我用来创建明暗模式的一些代码:
extension UINavigationBar: RMDThemeable {
func render(for theme: RMDTheme) {
switch theme {
case .light:
barStyle = .default
case .dark:
barStyle = .black
}
}
}
class RMDCollectionViewController: UICollectionViewController {
func render(for theme: RMDTheme) {
switch theme {
case .light:
collectionView?.backgroundColor = UIColor.baseBackgroundLight
case .dark:
collectionView?.backgroundColor = UIColor.baseBackgroundDark
}
}
}
这是奇怪颜色的截图:
这是视图调试器:
【问题讨论】:
-
可能是 UIWindow。尝试更改 UIWindow 的背景颜色
-
我以为可能是窗口,所以我也尝试设置它的背景颜色,但没有效果。仅当详细视图控制器为
UINavigationController时,才会出现非彩色视图。如果我推送一个常规视图控制器,它看起来不错。 -
这很奇怪。我猜你可能已经尝试过查看调试器?
-
是的。在测试应用程序和我的真实应用程序中,两个导航栏后面都有一个浅灰色栏。在测试应用程序上(一切正常),视觉效果视图的基本视图(在左侧导航栏中)通常是彩色的。在我的应用程序中,它显示为与该灰色条相似的颜色。就像它在渲染时使用灰色条一样,即使它隐藏在左视图控制器下方。我会添加截图。
标签: ios swift uisplitviewcontroller