UIViewController userInterfaceStyle 总是很轻

van*_*dzi 5 ios ios-darkmode

当启用暗模式时,UIViewControllers 总是使用亮模式。viewController.traitCollection.userInterfaceStyle 总是 Light 但 window.traitCollection.userInterfaceStyle 是 Dark。

UIUserInterfaceStyle 未在 plist 中设置。我尝试了所有可能的设置 - 将 UIUserInterfaceStyle 添加到 plist,为 UIWindow 和 UIViewController 设置 overrideUserInterfaceStyle。我为不同的情况记录了 userInterfaceStyle,结果是

TestDarkModeViewController *testController = [[TestDarkModeViewController alloc] initWithNibName:@"TestDarkModeViewController" bundle: nil];
testController.traitCollection.userInterfaceStyle //result Light
Run Code Online (Sandbox Code Playgroud)

但对于

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:testController];
navController.traitCollection.userInterfaceStyle //result Dark

UIViewController *testController2 = [[UIViewController alloc]init];
testController2.traitCollection.userInterfaceStyle //result Dark
Run Code Online (Sandbox Code Playgroud)

似乎只有当控制器以编程方式从 xib 文件加载时才会发生。知道什么是错误的以及如何解决这个问题吗?

SAX*_*ENA 0

以编程方式设置此属性

 navController.overrideUserInterfaceStyle = //.light/.dark
Run Code Online (Sandbox Code Playgroud)

您还可以强制设置 windows 属性。

window.overrideUserInterfaceStyle = //.light/.dark
Run Code Online (Sandbox Code Playgroud)