swift - 如何在 10.15 之前的 macOS 上获取 NSScreen 的本地化名称?
问题描述
macOS 10.15+ 提供NSScreen.localizedName
,它为屏幕提供面向用户的名称,例如“内置 Retina Display”或“Встроенный дисплей Retina”(如果本地语言是俄语)。
但是,我需要支持 10.15 之前的 macOS,目前还不清楚回退应该是什么。
我看到了这个问题,“如何在 Mac OS X 中使用显示 ID 获取显示名称?” . 但是,所有答案都使用CGDisplayIOServicePort
,这在 macOS >10.9 中不可用。
我还看到这个问题,“CGDisplayIOServicePort 在 OS X >= 10.9 中已弃用,如何替换?” . 但是,所有答案都取决于GLFW,这是一个巨大的库,我显然不想仅仅为了获得显示名称而包含它。
(编辑)我还发现了这个垫片,“从 NSScreen 获取显示名称”,但它不能正常工作 - 例如,我的“内置视网膜显示器”得到了一个奇怪的名称“彩色 LCD”,它没有io_service_t
为我的 Sidecar iPad 屏幕找一个。
解决方案
屏幕的实际名称是“彩色 LCD”,但用户友好的本地化名称(以及旧操作系统版本中显示的一个系统首选项)有一个额外的检查来检测它是笔记本电脑的内部显示器。
推荐阅读
- swift - 传入视图时 AsyncImage 不显示图像 URL
- python - 如何将曲线拟合到 3d 点云?
- c - #include 在 c 语言的 vs 代码中检测到的错误
- pandas - 如何获取包含 2 个单词的虚拟列
- django - Django ModelForm:使用初始值更改下拉列表的格式
- python - 您如何制作 tfrecord 以便您可以使用字符串键访问功能
- puppet - noop 和 apply 的 Puppet 配置版本不同
- nlp - 使用 pytorch_lightning 推断多标签情感分析
- python - 将 h2o.ai 作为服务运行(后台)
- member - 将 UserID 转换为成员对象 [DISCORD4J]