如何观察 AppKit 中系统偏好“侧边栏图标大小”的变化?

时间:2021-02-25 13:47:03

标签: macos cocoa appkit

在 macOS 系统偏好设置的主要部分,用户可以更改“侧边栏图标大小”。当有问题的 NSOutlineView 的大小模式设置为 default 时,此设置会更改侧边栏中使用的图标大小(并且因为 macOS 11 还会更改字体大小)。

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

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

1 个答案:

答案 0 :(得分:0)

我知道我有一个解决方案,但我正在寻找错误的项目。这是我发现的。观察 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
    }
}