问题标签 [macos-darkmode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
331 浏览

swift - Swift 命令行工具未接收 DistributedNotificationCenter 通知

我正在尝试创建一个非常基本的 Swift 命令行应用程序,当 macOS UI 更改为/从亮/暗模式时,该应用程序使用 WebSocket 向另一个应用程序发出信号。

出于某种原因,命令行工具没有收到来自 的任何通知DistributedNotificationCenter,尤其是AppleInterfaceThemeChangedNotification. 但是,在 Cocoa UI 应用程序中运行完全相同的代码applicationDidFinishLaunching可以正常工作。

在 Github 上找到了一个旧的 Obj-C CLI 项目,该项目旨在打印出每个通知,但这也无济于事。这让我怀疑苹果可能改变了一些东西,但我似乎在网上找不到任何关于它的东西。我需要设置某些 Xcode 项目设置吗?

0 投票
0 回答
162 浏览

swift - 切换到深色模式时 PDFView 的有效外观未更新

PDFKit 的 PDFView 似乎与暗模式不兼容。当用户切换到暗模式时,它effectiveAppearance不会更新。

有什么理由吗?有什么优雅的解决方法可以用暗模式更改 PDFView 的背景颜色吗?

0 投票
0 回答
355 浏览

css - SVG 暗模式样式在 Safari 中不起作用

网站正文暗模式样式在 Chrome 和 Safari 上都适用于我的 CSS 变量和prefers-color-scheme.

但是标志有不同的情况。我在其中设置了外部 .svg 样式,并使用了深色模式和浅色模式的样式,这非常适合 Chrome。但在 macOS 和 iOS Safari 上,它不会改变它的颜色。

可能的解决方案是什么?

谢谢

0 投票
1 回答
200 浏览

xcode - NSAppearanceNameAqua 在暗模式和亮模式下都返回

我在 Qt for mac 中有一个应用程序,升级到 XCode 11.4 后,我的应用程序没有切换到暗模式。

我检查了我的代码,我意识到 NSAppearance 名称在明暗模式下都是 NSAppearanceNameAqua。

我尝试了以下两种方法:

还有其他人面临同样的问题吗?

0 投票
1 回答
282 浏览

objective-c - 从命令行编译时将 SDK 版本写入二进制文件 (macOS)

我正在尝试检测系统是否处于暗模式。我已经尝试AppleInterfaceStyle从用户默认值中读取,即

这在大多数情况下都有效,但Auto在 Catalina 模式下存在问题。

现在从我所读到的是,更强大的方法是检查effectiveAppearance其中NSApplication看起来像这样的:

这种方法的问题是我正在为其编写的应用程序手动设置其appearance属性,这会阻止effectiveAppearance使用系统外观。app.appearance = nil我在检查之前尝试了设置,effectiveAppearance但没有帮助。

现在还有[NSAppearance currentAppearance]哪个使用当前线程的外观。如果线程没有明确设置该值,我不太确定该值解析为什么。

我的大问题是我无法访问运行 macOS 的机器来检查我的代码,所以如果有人知道在这里做什么,我将不胜感激。


编辑:看起来问题是该库没有针对正确版本的 SDK 进行编译。或者至少该版本没有写入库信息。

文档中:

如果您针对较早的 SDK 构建您的应用程序,但仍希望支持暗模式,请在您的应用程序的 Info.plist 文件中包含 NSRequiresAquaSystemAppearance 键(值为 NO)。仅当您的应用在 macOS 10.14 及更高版本中运行并启用暗模式时看起来正确时才这样做。

我已经通过-mmacosx-version-min=10.14. 根据我的发现,这个问题与我的问题基本相同,但我不太明白提交中的解决方案是什么。

我想这与-isysrootand有关系-platform_version。但是我没有找到任何关于他们做什么以及他们如何工作的好的参考。

我更新的问题是:

如何使用它们-isysroot以及-platform_version如何使用它们在我的二进制文件中启用 SDK 特定功能?

0 投票
1 回答
369 浏览

javascript - Electron NativeTheme:无法设置未定义的属性“themeSource”

目前我正在尝试在我的电子应用程序中设置系统/亮/暗模式切换器。对于电子应用程序,我使用了电子 vue 库,然后将电子版本升级到7.3.2.

所以现在我想,我可以使用电子的新 API nativeTheme 来创建这个新功能。但是我现在得到的问题是,当我导入 nativeTheme 时,它​​是未定义的:

现在代码如下所示:

我也已经尝试过使用 requirejs 变体,例如

但我显然得到了同样的错误。我当然已经在这里这里搜索过这个主题,但都没有解决我的问题。有什么我错过的吗?

此外,我还在这里发送带有版本的 package.json: package.json - devDependencies

0 投票
1 回答
553 浏览

objective-c - 在 macOS 上以编程方式更新模式更改(暗模式、亮模式)设置的颜色(objective-c)

我在 macOS,objective-c,而不是 iOS。X代码 12。

在很多视图中,我设置了这样的颜色:

每当用户更改外观时,例如更改为深色模式,我希望我的颜色会根据资产设置进行更改:

在此处输入图像描述

不幸的是,什么也没有发生。但是:在 IB 中应用的相同颜色会按预期直接更改。我仍然需要他们以编程方式进行更改。

然后我试图挂钩通知:

我收到通知,但是当我再次调用上面相同的代码时,仍然加载了错误的颜色。

任何帮助表示赞赏

0 投票
1 回答
179 浏览

macos - 切换暗模式时 NSAppearance 不更新

我有一个仅在 macOS 状态栏中运行的 macOS 应用程序。我将 Info.plist 中的“Application is agent (UIElement)”属性更改为“YES”:

我有一个计时器,它每 5 秒打印一次外观的名称,如下所示:

问题

当我在系统设置中切换暗/亮模式时,名称实际上并没有改变。它总是打印应用程序启动时设置的外观名称。

有没有办法听系统外观变化?

目标

我的最终目标实际上是将 an 绘制NSAttributedString到 an 上NSImage,并将其NSImage用作NSStatusItem按钮的图像。

对于我使用的属性字符串中的文本UIColor.labelColor,它应该基于系统外观。但是,它似乎不尊重系统外观的变化。

当我在深色模式下启动应用程序然后切换到浅色模式时:

黑暗-1 黑暗-2

当我在 Light Mode 下启动应用程序然后切换到 Dark Mode 时:

轻1 光2

边注

我将 theNSAttributedString变成 anNSImage并且不NSAttributedString直接在NSStatusItem按钮上使用的attributedTitle原因是因为它在状态栏中的位置不正确

0 投票
0 回答
64 浏览

uikit - 如何检测 macOS(Objective-C)中的“可访问性降低透明度”?

默认情况下,macOS11.0 Big Sur 在 Accessibility 上将“降低透明度”设置为 true。这使得浅色状态菜单与深色菜单几乎相同,从而使我的应用程序状态菜单栏图标的设置成为一项挑战。

在 iOS 上,一个简单的 UIKit 函数就可以解决问题:

但是没有办法在 macOS 上实现它,尽管 Apple 文档指出可用性是 iOS 8.0+ 和 macOS Catalyst 13.0+

有任何想法吗?谢谢!

0 投票
1 回答
656 浏览

javascript - 是否可以使用 JavaScript 在页面上的亮模式和暗模式之间切换?

我可以用

或者

检测它是否是操作系统的暗模式。

但是,有什么方法可以让我自己使用 JavaScript 修改状态?这样我就可以创建一个按钮,让用户在不想保留操作系统设置的情况下在明暗之间切换。