我的应用程序的很大一部分由web视图组成,以提供尚未通过本机实现提供的功能。网络团队没有计划为网站实施黑暗主题。因此,我的应用程序在iOS 13上的暗模式支持看起来会有点一半一半。
是否可以选择退出暗模式支持,这样我们的应用程序总是显示光模式,以匹配网站主题?
我的应用程序的很大一部分由web视图组成,以提供尚未通过本机实现提供的功能。网络团队没有计划为网站实施黑暗主题。因此,我的应用程序在iOS 13上的暗模式支持看起来会有点一半一半。
是否可以选择退出暗模式支持,这样我们的应用程序总是显示光模式,以匹配网站主题?
当前回答
这里有一些小贴士和技巧,你可以在你的应用程序中使用来支持或绕过黑暗模式。
第一个技巧:重写ViewController样式
你可以覆盖UIViewController的界面风格
1: overrideuserinterfacstyle = .dark //暗模式 2: overrideuserinterfacstyle = .light //光照模式
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
overrideUserInterfaceStyle = .light
}
}
第二个技巧:在info.plist中添加一个键
您可以简单地添加一个新密钥
UIUserInterfaceStyle
在你的应用程序信息。plist,并将其值设置为Light或Dark。这将覆盖应用程序默认样式为您提供的值。 你不需要在每个viewController中添加overrideUserInterfaceStyle = .light这一行,只需在info中添加一行即可。就是这样。
其他回答
Xcode 12和iOS 14更新。我已经尝试了之前的选项选择退出黑暗模式和这句话在信息。Plist文件不适合我:
<key>UIUserInterfaceStyle</key>
<string>Light</string>
现在它被重命名为:
<key>Appearance</key>
<string>Light</string>
此设置将阻止整个应用程序中的所有黑暗模式。
编辑:
修复了错别字,谢谢@sarah
对于整个应用程序:(在信息。plist文件):
<key>UIUserInterfaceStyle</key>
<string>Light</string>
窗口(通常是整个应用程序):
window!.overrideUserInterfaceStyle = .light
你可以从SceneDelegate中获取窗口
UIViewController:
viewController.overrideUserInterfaceStyle = .light
你可以设置任何viewController,甚至在viewController内部
UIView:
view.overrideUserInterfaceStyle = .light
你可以设置任何视图,甚至在视图内部
如果你支持早期的iOS版本,你可能需要使用if #available(iOS 13.0, *){…}。
SwiftUI View):
.preferredColorScheme(.light) <- This Modifier
or
.environment(\.colorScheme, .light) <- This Modifier
只需在info中添加这些行。plist文件:
<key>UIUserInterfaceStyle</key>
<string>light</string>
这将迫使应用程序只在轻模式下运行。
在Xcode 12中,你可以将add更改为“appearance”。这会有用的!!
斯威夫特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
}