为什么我的ios应用程序不禁用黑暗模式?

时间:2019-10-29 14:26:32

标签: ios swift ios13 xcode11 ios-darkmode

所以...我试图通过根据苹果文档强制采用轻模式来将我的应用设置为禁用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 Documentation: Choosing a Specific Interface Style for Your iOS App

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

3 个答案:

答案 0 :(得分:2)

只需在应用程序 info.plist 中添加新密钥 <input type="text" name="query" placeholder="" value={this.state.inputValue} onChange={this.handleChange} /> handleChange (e) { console.log('called handle change'); this.setState({inputValue: e.target.value}); } ,并将其值设置为 UIUserInterfaceStyle 。这会将应用默认样式覆盖为您提供的值。

所以您无需费心在其他任何地方

答案 1 :(得分:1)

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

应该工作。在您的AppDelegate的{​​{1}}中调用它。

答案 2 :(得分:1)

更改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
            }
        }
    }

如有任何疑问,请告诉我。