我的应用程序的很大一部分由web视图组成,以提供尚未通过本机实现提供的功能。网络团队没有计划为网站实施黑暗主题。因此,我的应用程序在iOS 13上的暗模式支持看起来会有点一半一半。
是否可以选择退出暗模式支持,这样我们的应用程序总是显示光模式,以匹配网站主题?
我的应用程序的很大一部分由web视图组成,以提供尚未通过本机实现提供的功能。网络团队没有计划为网站实施黑暗主题。因此,我的应用程序在iOS 13上的暗模式支持看起来会有点一半一半。
是否可以选择退出暗模式支持,这样我们的应用程序总是显示光模式,以匹配网站主题?
当前回答
********** Xcode 11以上的最容易的方法 ***********
将此添加到信息中。Plist before </dict></ Plist >
<key>UIUserInterfaceStyle</key>
<string>Light</string>
其他回答
除了其他回答,根据我对以下问题的理解,你只需要在对iOS 13 SDK(使用XCode 11)编译时准备Dark模式。
系统假设应用程序链接到iOS 13或更高版本的SDK 支持光明和黑暗的外观。在iOS中,你指定 通过指定特定的界面样式来指定您想要的特定外观 到您的窗口、视图或视图控制器。您也可以禁用支持 黑暗模式完全使用信息。plist关键。
Link
objective - c版本
if (@available(iOS 13.0, *)) {
_window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
斯威夫特5
您可以通过以下链接下载演示项目:- https://github.com/rashidlatif55/DarkLightMode
两种方法切换暗到亮模式:
1- info.plist
<key>UIUserInterfaceStyle</key>
<string>Light</string>
2-程序化或运行时
@IBAction private func switchToDark(_ sender: UIButton){
UIApplication.shared.windows.first?.overrideUserInterfaceStyle = .dark
}
********** Xcode 11以上的最容易的方法 ***********
将此添加到信息中。Plist before </dict></ Plist >
<key>UIUserInterfaceStyle</key>
<string>Light</string>
如果你将添加UIUserInterfaceStyle键到plist文件中,苹果可能会拒绝发布构建,如这里所述:https://stackoverflow.com/a/56546554/7524146 无论如何,显式地告诉每个ViewController self是很烦人的。overrideuserinterfacstyle = .light。但是你可以在根窗口对象上使用这段代码:
if #available(iOS 13.0, *) {
if window.responds(to: Selector(("overrideUserInterfaceStyle"))) {
window.setValue(UIUserInterfaceStyle.light.rawValue, forKey: "overrideUserInterfaceStyle")
}
}
请注意,你不能在应用程序(application: didFinishLaunchingWithOptions:)中这样做,因为这个选择器在早期阶段不会响应true。但你可以以后再做。如果你在你的应用中使用自定义AppPresenter或AppRouter类,而不是在AppDelegate中自动启动UI,这非常简单。