10

所以......我试图通过根据苹果文档强制亮模式将我的应用程序设置为禁用 iOS 13 暗模式,在模拟器中所有尝试都可以正常工作,但是当我在真实设备上尝试时,什么都没有发生,就像我'我从来没有改变过我的代码

第一次尝试

覆盖窗口、视图或视图控制器的界面样式

我试图把这个代码示例放在我的 viewDidLoad()

没有改变

if #available(iOS 13.0, *) {
   overrideUserInterfaceStyle = .light
} else {
  // Fallback on earlier versions
}

第二次尝试

完全退出暗模式

系统会自动选择与 iOS 13.0 或更高版本 SDK 关联的任何应用程序以显示浅色和深色外观。如果您需要额外的时间来处理应用程序的暗模式支持,您可以通过在应用程序的 Info.plist 文件中包含 UIUserInterfaceStyle 键(值为 Light)来暂时退出。将此键设置为 Light 会导致系统忽略用户的偏好并始终为您的应用应用浅色外观。

没有改变

Apple 文档:为您的 iOS 应用程序选择特定的界面样式

如果有人知道我如何将我的应用程序设置为仅在灯光模式下......我将非常感激:D

4

4 回答 4

10

只需UIUserInterfaceStyle在应用程序info.plist中添加一个新键(注意:Xcode 12 及更高版本已重命名为Appearance)并将其值设置为Light or Dark。这会将应用默认样式覆盖为您提供的值。

所以你不必费心在其他任何地方拥有它

于 2019-10-29T16:20:19.747 回答
5
if #available(iOS 13, *) {
    window.overrideUserInterfaceStyle = .light
}

应该管用。在你AppDelegatedidFinishLaunchingWithOptions.

于 2019-10-29T14:48:10.730 回答
2

更改 iOS 13+ 版本的窗口 UserInterfaceStyle。刚设置

UIApplication.shared.changeStatusBarStyle(.light)

或者

UIApplication.shared.changeStatusBarStyle(.dark)

每次更换窗口后。

extension UIApplication {

        enum StatusColor {

            case dark, light
        }

        func changeStatusBarStyle(_ mode: StatusColor = .light) {

            if #available(iOS 13.0, *) {

                guard let appDelegate = delegate as? AppDelegate else { return }

                var interfaceStyle: UIUserInterfaceStyle

                switch mode {
                case .dark:
                    interfaceStyle = .dark
                default:
                    interfaceStyle = .light
                }

                appDelegate.window?.overrideUserInterfaceStyle = interfaceStyle
            }
        }
    }

如果有任何困惑,请告诉我。

于 2020-04-03T00:59:38.997 回答
1

Info.plist 中添加

<key>Appearance</key>
<string>Light</string>
于 2021-08-31T06:57:13.837 回答