我的应用程序的很大一部分由 Web 视图组成,以提供本机实现尚不可用的功能。网络团队没有计划为网站实施深色主题。因此,在 iOS 13 上支持深色模式时,我的应用看起来会有点一半/一半。
是否可以选择退出暗模式支持,以便我们的应用程序始终显示亮模式以匹配网站主题?
首先,这是Apple与选择退出暗模式相关的条目。 此链接中的内容是为 Xcode 11 和 iOS 13 编写的 :
在 info.plist 文件中使用以下键:
UIUserInterfaceStyle
并为其赋值Light。
Light
作业的 XMLUIUserInterfaceStyle:
<key>UIUserInterfaceStyle</key> <string>Light</string>
UIUserInterfaceStyle 的 Apple文档
您可以overrideUserInterfaceStyle针对应用程序的window变量进行设置。这将适用于出现在窗口中的所有视图。这在 iOS 13 中可用,因此对于支持以前版本的应用程序,您必须包括可用性检查。
overrideUserInterfaceStyle
window
根据您的项目的创建方式,这可能在AppDelegateorSceneDelegate文件中。
AppDelegate
SceneDelegate
if #available(iOS 13.0, *) { window?.overrideUserInterfaceStyle = .light }
您可以overrideUserInterfaceStyle针对UIViewControllers 或UIView‘overrideUserInterfaceStyle变量进行设置。这在 iOS 13 中可用,因此对于支持以前版本的应用程序,您必须包括可用性检查。
UIViewController
UIView
迅速
override func viewDidLoad() { super.viewDidLoad() // overrideUserInterfaceStyle is available with iOS 13 if #available(iOS 13.0, *) { // Always adopt a light interface style. overrideUserInterfaceStyle = .light } }
对于 Objective-C 中那些可怜的灵魂
if (@available(iOS 13.0, *)) { self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; }
当针对 设置时UIViewController,视图控制器及其子项采用定义的模式。
当针对 设置时UIView,视图及其子项采用定义的模式。
关于 overrideUserInterfaceStyle 的 Apple 文档
您可以设置preferredColorScheme为light或dark。提供的值将设置演示文稿的配色方案。
preferredColorScheme
light
dark
import SwiftUI struct ContentView: View { var body: some View { Text("Light Only") .preferredColorScheme(.light) } }
对于preferredColorScheme 的Apple文档
感谢@Aron Nelson 、 @Raimundas Sakalauskas 、 @NSLeader 和 @rmaddy 用他们的反馈改进了这个答案。