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

是否可以选择退出暗模式支持,这样我们的应用程序总是显示光模式,以匹配网站主题?


当前回答

在Xcode 12中,你可以将add更改为“appearance”。这会有用的!!

其他回答

iOS 14.3和Xcode 12.3更新

在信息。plist文件添加外观为光。

<key>Appearance</key>
<string>Light</string>

最新更新,

如果你用的是Xcode 10。x,那么默认的UIUserInterfaceStyle是light对于iOS 13.x。当在iOS 13设备上运行时,它只能在灯光模式下工作。

不需要显式地在信息中添加UIUserInterfaceStyle键。plist文件,添加它将给出一个错误时,你验证你的应用程序,说:

无效的信息。plist关键。载荷/AppName.appInfo中的键'UIUserInterfaceStyle'。Plist文件无效。

只在Info中添加uiuserinterfacstyle键。plist文件时使用Xcode 11.x。

首先,这是苹果关于退出黑暗模式的词条。 这个链接的内容是为Xcode 11和iOS 13编写的:

整个应用程序通过信息。plist文件(Xcode 12)

在你的信息中使用以下键。plist文件:

UIUserInterfaceStyle

并为其赋值Light。

uiuserinterfacstyle赋值的XML:

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

UIUserInterfaceStyle的苹果文档


整个应用程序通过信息。plist在构建设置(Xcode 13)


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

你可以针对应用程序的窗口变量设置overrideUserInterfaceStyle。这将应用于出现在窗口中的所有视图。这在iOS 13中是可用的,所以对于支持以前版本的应用程序,你必须包含可用性检查。

根据您的项目是如何创建的,这可能在AppDelegate或SceneDelegate文件中。

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

单独的UIViewController或UIView

你可以针对UIViewControllers或UIView的overrideUserInterfaceStyle变量设置overrideUserInterfaceStyle。这在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的苹果文档


通过SwiftUI View的个人视图

您可以将preferredColorScheme设置为浅色或深色。提供的值将设置演示的配色方案。

import SwiftUI

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

首选配色方案的苹果文档


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

我的应用程序不支持黑暗模式,现在使用一个浅的应用程序栏颜色。我可以通过在Info.plist中添加以下键来强制状态栏内容为深色文本和图标:

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDarkContent</string>
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

在这里找到其他可能的值:https://developer.apple.com/documentation/uikit/uistatusbarstyle

颤振的用户

不要忘记在Flutter应用程序栏上设置应用程序栏亮度属性,如下所示:

AppBar(
    backgroundColor: Colors.grey[100],
    brightness: Brightness.light, // <---------
    title: const Text('Hi there'),
),

在Xcode 11中,你可以在整个应用中关闭暗模式:

去Info.plist 添加波纹管 <键> UIUserInterfaceStyle关键> < / 光<字符串> < /字符串>

信息。Plist将如下所示…