macOS暗模式和NSAboutPanelOptionCredits

时间:2018-12-07 14:17:42

标签: objective-c xcode macos appearance macos-darkmode

我在应用商店中有一个相当简单的应用程序,名为Range,我想使其暗模式兼容macOS 10.14。我注意到,“关于”窗口不会更改所有文本颜色。

我正在使用NSAboutPanelOptionCredits,在这里我只需要捆绑Credits.rtf文件,然后应用程序即可处理其余部分。

https://developer.apple.com/documentation/appkit/nsaboutpaneloptioncredits?language=objc

问题是,当我更改为暗模式时,文件中的文本保持黑色,而其他自动包含的文本更改为白色(应用程序名称,版本等...),我已经打开了.rtf文件而且没有“继承”设置,也没有类似的东西。

知道我做错了什么,和/或想念什么吗?

赞赏任何想法。 谢谢!

Light about window Dark about window

4 个答案:

答案 0 :(得分:6)

诀窍是使用语义颜色。

使用Xcode编辑您的RTF文件。选择文本并调出文本颜色选择器。

Xcode将 Developer 颜色添加到颜色选择器。为您的文本选择适当的语义颜色;我倾向于使用labelColorsecondaryLabelColorlinkColor

当您切换到黑暗模式时,这些语义颜色会适当更改。

答案 1 :(得分:2)

10.14 AppKit Release Notes可能会有所帮助:

  

外观识别积分

     

您可以通过以属性字符串的形式提供积分,或将Credits.rtf或Credits.rtfd放在应用程序包中,使积分区域与应用程序的外观匹配。使用适当的系统颜色,例如textColor,linkColor和labelColor,可以使文本在任何外观下正确显示。   如果您使用.rtf或.rtfd文件为信用点区域提供文本,则必须使用macOS 10.14(Beta 5或更高版本)保存该文件,以进行外观识别处理。如果您在macOS的早期版本上创建.rtf或.rtfd文件,则仅当文件仅包含黑色文本且没有背景色时,才会应用外观感知处理。

答案 2 :(得分:0)

您可以尝试

label.accessibilityIgnoresInvertColors = true

答案 3 :(得分:0)

谁需要它。 enter image description here

打开时:

enter image description here