gpt4 book ai didi

objective-c - 文件图标在 macOS Catalina 中更改为应用程序图标

转载 作者:行者123 更新时间:2023-12-03 16:07:42 24 4
gpt4 key购买 nike

我有一个可以打开 Office 文件(.doc、.xls 等)的 Mac 应用程序,我需要显示这些支持的文件的自定义图标。我曾经通过在 CFBundleDocumentTypes 中添加支持的 UTI 类型并分配我的自定义 icns 图标来实现。还将我的应用程序设置为打开这些文件类型的默认应用程序。

现在,这种方法在 macOS Catalina beta 之前一直完美运行,即使 Microsoft 应用程序与我的应用程序一起存在。在 macOS Catalina Beta 版中,我看到我的应用程序图标代替了所有文件图标。

我尝试清除图标缓存,甚至重新启动 Finder,但无济于事。后来我什至尝试在 UTExportedTypeDeclarationsUTImportedTypeDeclarations 下添加 UTI 类型。

这是 Catalina Beta 的错误吗?或者我可以做任何事情来让这个工作正常进行。

我的 plist 的 UTExportedTypeDeclarations 看起来像这样。 UTImportedTypeDeclarationsCFBundleDocumentTypes 具有相似的值。

<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>org.openxmlformats.spreadsheetml.sheet</string>
<string>org.openxmlformats.openxml</string>
<string>public.composite-content</string>
</array>
<key>UTTypeDescription</key>
<string>Excel Open XML spreadsheet</string>
<key>UTTypeIconFile</key>
<string>custom.icns</string>
<key>UTTypeIdentifier</key>
<string>com.microsoft.excel.openxmlformats.spreadsheetml.sheet</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>com.apple.ostype</key>
<string>XLSX</string>
<key>public.filename-extension</key>
<array>
<string>xlsx</string>
</array>
</dict>
</dict>
</array>

最佳答案

看起来 macOS 10.15 改变了类型对应图标的解析方式。

我找到了一种在 Catalina 上为我的应用程序获取正确文档图标的方法:
以前,我只在 CFBundleDocumentTypes 字典中为 CFBundleTypeIconFile 键定义了一个图标。但自 Catalina 以来,系统使用 LSItemContentTypes 数组来查找导出的 UTI,然后使用该 UTI 的图标(通过 UTTypeIconFile 定义) 。

如果LSItemContentTypes数组包含系统尚不知道的类型(=新引入的自定义类型),则还必须通过在UTExportedTypeDeclarations中定义字典来导出这些类型。

这适用于我的情况,因为我使用具有自己的 UTI 的自定义文件格式。
对于您所描述的使用现有尿路感染的情况,我不确定是否仍然可以覆盖您不“拥有”的尿路感染的图标。我认为为第 3 方类型定义自定义图标的正确方法是在导入类型数组 (UTImportedTypeDeclarations) 中定义字典。在这种情况下,只要没有其他应用程序通过导出 UTI 来声明其所有权,系统就应该选择您的自定义图标。我认为,如果有 2 个或更多应用程序声明其所有权(尚未尝试过),则设置为某种类型的默认应用程序的应用程序图标会获胜。

我遇到的另一个问题是,分配给 UTTypeIconFile 的图标文件不能来自 Assets 目录(这适用于 CFBundleTypeIconFile)。它需要引用 bundle 中资源文件夹中的 .icns 文件。
可以使用以下命令将 Assets 目录中现有的 .iconset 文件夹转换为 icns:iconutil --convert icns iconname.iconset

我不确定这是预期的行为还是这只是 Xcode 11 的 Assets 目录编译器构建阶段的错误。我通过反馈助手提交了错误。

关于objective-c - 文件图标在 macOS Catalina 中更改为应用程序图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com