如何检测OS X是否处于黑暗模式?

 旭89浪子_499 发布于 2022-12-29 10:34

我的cocoa应用程序在新的OS X"黑暗模式"下运行时必须改变其行为.

有没有办法检测OS X样式是否设置为此模式?

4 个回答
  • 如果您不想处理枚举和switch语句,也可以将其包装为布尔值:

    /// True if the application is in dark mode, and false otherwise
    var inDarkMode: Bool {
        let mode = UserDefaults.standard.string(forKey: "AppleInterfaceStyle")
        return mode == "Dark"
    }
    

    适用于Swift 4.2

    2022-12-29 10:36 回答
  • Swift 2 - > String("Dark","Light")

    let appearance = NSUserDefaults.standardUserDefaults().stringForKey("AppleInterfaceStyle") ?? "Light"
    

    Swift 3 - > Enum(黑暗,光明)

    enum InterfaceStyle : String {
       case Dark, Light
    
       init() {
          let type = UserDefaults.standard.string(forKey: "AppleInterfaceStyle") ?? "Light"
          self = InterfaceStyle(rawValue: type)!
        }
    }
    
    let currentStyle = InterfaceStyle()
    

    2022-12-29 10:36 回答
  • 您可以通过检查来检测使用此NSAppearanceCustomization方法。effectiveAppearancedarkAqua

    Swift 4示例:

    extension NSView {
        var isDarkMode: Bool {
            if #available(OSX 10.14, *) {
                if effectiveAppearance.name == .darkAqua {
                    return true
                }
            }
            return false
        }
    }
    

    2022-12-29 10:36 回答
  • 不要认为有可靠的方法来检测它,但是你可以defaults read用来检查OSX是否处于黑暗模式.

    defaults read -g AppleInterfaceStyle
    

    返回Dark(暗模式)或返回域对不存在.

    编辑:

    正如Ken Thomases所说,你可以通过NSUserDefaults访问.GlobalPreferences,所以

    NSString *osxMode = [[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"];
    

    如果是osxMode nil那么它不是处于黑暗模式,但是如果是osxMode @"Dark"那么它处于黑暗模式.

    2022-12-29 10:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有