NSSplitViewdividerColor 覆盖不适用于 macOS 11 中的侧边栏分隔符

问题描述 投票:0回答:2

我有一个小应用程序,其中包含一个 NSSplitViewController 和 3 个垂直分割视图(侧边栏、内容视图、详细信息视图),类似于邮件应用程序。我已经以编程方式更改了不同分割视图之间分隔线的颜色,并且在 macOS 11 之前效果良好。

不幸的是,自从升级项目以支持 macOS 11 以来,侧边栏和内容视图之间的分隔线在浅色和深色主题中都恢复为默认的苹果颜色,并且我的覆盖似乎不再起作用。

我目前只是简单地子类化 NSSplitView 并覆盖 Apple 文档中描述的dividerColor方法

// ... You can override this method to change the color of dividers.
@available(macOS 10.5, *)
@NSCopying open var dividerColor: NSColor { get }

另一个分隔器看起来非常好,正如预期的那样工作。

有关如何覆盖侧边栏分隔线颜色的任何线索?

预先感谢您的任何建议。

swift macos appkit nssplitview macos-big-sur
2个回答
0
投票

你可以尝试用这个方法自己画分隔线:

func drawDivider(in rect: NSRect)

如果由于某种原因您有时需要原始设计,甚至可以从此方法调用 super。


0
投票

如果将第一个面板的

dividerColor
更改为
default
,则设置 NSSplitViewItem.Behavior 仅适用于侧边栏。

如果您想继续使用 sidebar 行为,最好不要设置或覆盖

dividerColor
,因为这样做会删除侧边栏分隔线的鲜艳颜色处理,即使它忽略
dividerColor
设置。这可能是 AppKit 的众多小错误之一。

© www.soinside.com 2019 - 2024. All rights reserved.