我编译了一个名为 MyBundle.bundle 的 Mac OSX 捆绑包,它用作另一个应用程序的插件。我希望捆绑包有一个独特的图标,因此我将 Info.plist 文件设置为:
<key>CFBundleIconFile</key>
<string>MyIcon.icns</string>
并将文件 MyIcon.icns 放置在捆绑包的 MyBundle.bundle/Contents/Resources 文件夹中。
这不起作用,查找器显示捆绑包的通用图标并忽略指定的 MyIcon.icns 文件。如果我将捆绑包的扩展名从 .bundle 更改为 .app,图标会立即显示 - 所以我知道 Info.plist 是正确的。
我找到了一种解决方法,可以模拟用户在捆绑包上复制和粘贴图标:
我将图标作为“icns”类型和 id -16455 的资源添加到捆绑包的 .rsrc 文件中。
我接着打电话
/Developer/Tools/SetFile -a BC MyBundle.bundle
这确实有效,但确实很蹩脚。从 Mac OS 10.8 开始,SetFile 需要很长时间才能执行。
我的问题:是否有办法强制 Finder 显示捆绑包的图标,而无需进行此类黑客攻击?
顺便说一句:有一个关于同一主题的问题:设置非应用程序 mac os x 捆绑包的图标 https://stackoverflow.com/questions/4806085/set-icon-of-non-app-mac-os-x-bundle;但唯一的答案是指导如何创建图标,并不能帮助解决问题。
您可以使用 NSWorkspace
[[NSWorkspace sharedWorkspace] setIcon:(NSImage *)image forFile:(NSString *)fullPath options:(NSWorkspaceIconCreationOptions)options]
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)