【问题标题】:How to observe changes in system preference "Sidebar icon size" in AppKit?如何在 AppKit 中观察系统偏好“侧边栏图标大小”的变化?
【发布时间】:2021-02-25 13:47:03
【问题描述】:

在 macOS 系统偏好设置的主要部分,用户可以更改“侧边栏图标大小”。当相关NSOutlineView 的大小模式设置为default 时,此设置会更改边栏中使用的图标大小(自 macOS 11 起也更改字体大小)。

我想在我的应用程序中添加一个 UserNotification 观察者来跟踪对上述设置的更改,以便在每次大小更改后执行一些额外的微调,但找不到任何适用的 NSNotification.Name 或其他常量。

欢迎任何可行的解决方案或建议。

【问题讨论】:

    标签: macos cocoa appkit


    【解决方案1】:

    我知道我有一个解决方案,但我在错误的项目中搜索。这就是我发现的。观察UserDefaults 不是一个很好的选择,但至少它有效:

    fileprivate let tableViewDefaultSizeModeKey = "NSTableViewDefaultSizeMode"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        UserDefaults.standard.addObserver(self, forKeyPath: tableViewDefaultSizeModeKey, options: .new, context: nil)
    }
    
    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == tableViewDefaultSizeModeKey {
            // Do whatever is needed
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多