如何关闭应用程序文档类型的Finder图标预览?

时间:2017-02-02 03:39:18

标签: xcode macos icons finder uti

我已经设法做了正确的舞蹈并为我的OS X应用程序的文档类型设置了自定义UTI,并带有自定义文件扩展名等等。我也为我的文件类型设置了一个图标,这也是有效的。我知道这一点,因为当我从我的应用程序中保存一个新文件时,我可以看到它在Finder中显示正确的图标。但是 - 大约一秒钟之后,Finder用一个通用的“预览”图标替换我的图标,在图标内显示我文件的文本内容,我的文件扩展名大写,位于预览图标的底部,就像这样:

enter image description here

我认为这种情况正在发生,因为我将自定义UTI声明为MIME类型text/plain并符合public.utf8-plain-text。我确实想这样做,因为它们实际上是文本文件,我希望允许用户将它们视为这样,其他应用程序可以将它们视为等等。但鉴于此,Finder(可能通过一些QuickLook生成器)或者某事)因此说“啊哈,它是一个文本文件,我知道如何为文本文件制作自定义预览图标!”并替换我的自定义图标。不用说,这不是我想要的。我怎样才能防止这种情况发生?我在我的项目中使用了Objective-C,但我不认为这是一个特定于语言的问题;这一切都与我的应用程序的plist中的UTI声明有关。

说到这里,这里是我在Ucode中配置UTI的方式截图:

enter image description here

这是Xcode中UTI导出的屏幕截图:

enter image description here

可以将那里的图标预览显示为问号;这是因为图标图像作为.iconset文件夹包含在我的项目中,在构建时Xcode将其转换为必需的.icns文件,并且Xcode不够智能以显示正确的预览。但正如我上面所说,正确的图标在Finder中显示一秒钟,然后被预览图标替换,因此图标.icns文件的设置和.icns的绑定UTI显然正在发挥作用。顺便说一句,如果我在Finder中对我的文件执行“获取信息”,顺便说一下,它会在信息窗口的左上角显示正确的图标。正确的图标也显示在我的应用程序窗口的标题栏中。只是在Finder的显示屏中使用了错误的图标。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过进一步的实验,到目前为止我能够找到的最佳解决方案包括改变"符合"从public.utf8-plain-textpublic.text的字段。 public.text UTI用于任何类型的文本 - 任何编码,有或没有标记等。任何更具体的符合UTI似乎导致Finder(或者无论是谁)替换我的图标。但是对于public.text,图标不会被替换,大概是因为无论谁做这件事感觉他们没有足够的信息可以继续,因为public.text是如此通用。

这实际上并非非最佳,因为这意味着我的文件中使用的编码未在我的UTI导出信息中公开声明,这使得其他应用程序不太可能将我的应用程序的文件打开为文本。如果其他人有更好的解决方案,我很乐意投票赞成这个答案。但是对于子孙后代,我已经提出了这个答案,因为它可能会帮助其他类似的船。