Ios 在iPad上使用window.overrideUserInterfaceStyle时,暗模式未启用/禁用

Ios 在iPad上使用window.overrideUserInterfaceStyle时,暗模式未启用/禁用,ios,swift,xcode,uikit,uiscene,Ios,Swift,Xcode,Uikit,Uiscene,我通过在我的应用程序中调用window.overrideUserInterfaceStyle成功实现了暗模式切换。在真实的iPhone或模拟器中运行应用程序时,该功能工作正常 但是,当我在iPad上运行相同的脚本时,只有视图.overrideUserInterfaceStyle起作用。如果我尝试使用window.overrideUserInterfaceStyle,它不会更新trait集合(也不会调用traitCollectionDidChange(41;) 要更改我正在执行的样式(从白色样式更

我通过在我的应用程序中调用
window.overrideUserInterfaceStyle
成功实现了暗模式切换。在真实的iPhone或模拟器中运行应用程序时,该功能工作正常

但是,当我在iPad上运行相同的脚本时,只有
视图.overrideUserInterfaceStyle
起作用。如果我尝试使用
window.overrideUserInterfaceStyle
,它不会更新trait集合(也不会调用
traitCollectionDidChange(41;

要更改我正在执行的样式(从白色样式更改为深色样式),请执行以下操作:

UIApplication.shared.connectedScenes.forEach{(场景:UIScene)位于
(scene.delegate为?SceneDelegate)?.window?.overrideUserInterfaceStyle=.dark//只有这一个可以在iPhone上使用。
}
UIApplication.shared.delegate?.window???.overrideUserInterfaceStyle=.dark//Force
UIWindow.appearance().overrideUserInterfaceStyle=.dark//Force
当执行上述代码时,它应该替换为明暗样式配置的所有UIView的颜色。
UIColor
。也可以调用
traitCollectionDidChange(41;
。但这些操作都不会在iPad模拟器上发生

上面的代码只适用于iPhone real/simulator,它应该也适用于iPad模拟器。我这里没有任何iPad能够使用黑色风格

也许是模拟器上的错误

我还尝试创建了一个示例应用程序,样式更改确实可以在iPad上运行,但因为它是一个没有库的干净项目,所以应该可以运行

我还试图最小化我的应用程序,但仍然无法正常工作,所以我担心这是否是库造成的冲突

当使用
UIApplication
设置而不是
UIScene
时,也会出现此问题


我将Xcode 11.3和Swift 5与一些Cocoapod库一起使用。

如果您使用自定义转换,我建议您在完成动画后设置
viewController.overrideUserInterfaceStyle=.unspecified

像这样:

if#可用(iOS 13.0,*){
viewController.overrideUserInterfaceStyle=.dark
}
UIView.animate(持续时间:defaultAnimationDuration,延迟:0,动画:{
//设置viewController的动画
},完成:{[weak self]\uuIn
如果可用(iOS 13.0,*){
viewController.overrideUserInterfaceStyle=.unspecified
}
})

这将使您的
UIViewController
始终遵循
UIWindow
用户界面样式。

如果您使用的是自定义转换,我建议您在完成动画后设置
viewController.overrideUserInterfaceStyle=.unspecified

像这样:

if#可用(iOS 13.0,*){
viewController.overrideUserInterfaceStyle=.dark
}
UIView.animate(持续时间:defaultAnimationDuration,延迟:0,动画:{
//设置viewController的动画
},完成:{[weak self]\uuIn
如果可用(iOS 13.0,*){
viewController.overrideUserInterfaceStyle=.unspecified
}
})

这将使您的
UIViewController
始终遵循
UIWindow
用户界面风格。

检查这一点,这可能是您的问题的答案@AdarshKC它不是。我知道如何使用
overrideeUserInterfaceStyle
。在
plist
中设置这一点不是一个选项。@AdarshKC我想我发现了这个问题。我在自定义转换中将
overrideUserInterfaceStyle
应用到
UIViewController
中。已删除此项以对问题进行排序。但现在我正在尝试修复样式冲突。请检查此项,这可能是您的问题@AdarshKC的答案,不是。我知道如何使用
overrideUserInterfaceStyle
。请在中设置此项
plist
不是一个选项。@AdarshKC我想我发现了问题。我在自定义转换中将
overrideUserInterfaceStyle
应用到
UIViewController
中。删除了它以对问题进行排序。但现在我正在尝试修复样式冲突。