小编典典

是否可以在 iOS 13 上选择退出暗模式?

all

我的应用程序的很大一部分由 Web 视图组成,以提供本机实现尚不可用的功能。网络团队没有计划为网站实施深色主题。因此,在 iOS 13
上支持深色模式时,我的应用看起来会有点一半/一半。

是否可以选择退出暗模式支持,以便我们的应用程序始终显示亮模式以匹配网站主题?


阅读 124

收藏
2022-03-17

共1个答案

小编典典

首先,这是Apple与选择退出暗模式相关的条目。
此链接中的内容是为 Xcode 11 和 iOS 13 编写的

通过 info.plist 文件(Xcode 12)的整个应用程序

在 info.plist 文件中使用以下键:

UIUserInterfaceStyle

并为其赋值Light

作业的 XMLUIUserInterfaceStyle

<key>UIUserInterfaceStyle</key>
<string>Light</string>

UIUserInterfaceStyle 的 Apple文档


整个应用程序通过构建设置中的 info.plist (Xcode 13)

在此处输入图像描述


通过 window 属性打开整个应用程序窗口

您可以overrideUserInterfaceStyle针对应用程序的window变量进行设置。这将适用于出现在窗口中的所有视图。这在 iOS
13 中可用,因此对于支持以前版本的应用程序,您必须包括可用性检查。

根据您的项目的创建方式,这可能在AppDelegateorSceneDelegate文件中。

if #available(iOS 13.0, *) {
    window?.overrideUserInterfaceStyle = .light
}

单独的 UIViewController 或 UIView

您可以overrideUserInterfaceStyle针对UIViewControllers
UIViewoverrideUserInterfaceStyle变量进行设置。这在 iOS 13
中可用,因此对于支持以前版本的应用程序,您必须包括可用性检查。

迅速

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
文档


通过 SwiftUI 视图的单个视图

您可以设置preferredColorSchemelightdark。提供的值将设置演示文稿的配色方案。

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Light Only")
            .preferredColorScheme(.light)
    }
}

对于preferredColorScheme 的Apple文档


感谢@Aron Nelson@Raimundas Sakalauskas@NSLeader@rmaddy
用他们的反馈改进了这个答案。

2022-03-17