我正在开发一个项目,需要在运行时更改App图标。我已将 default_icon.icns 设置为默认的应用图标。
现在,当我想更改App的图标时,我在Appdelegate.m类中使用下面的代码片段。
NSString *iconPath = @“ ICON_PATH/new_icon_file.png ”;
NSImage *icon =[[NSImage alloc] initWithContentsOfFile:iconPath];
if (icon != nil)
{
NSLog(@“Changing App icon");
[NSApp setApplicationIconImage:icon];
}
当我在10.9.4 OSX上运行此项目时,App Icon在运行时没有变化,直到我重新启动我的Mac机器。 重新启动mac机器后,App default_icon 将替换为 new_icon_file 。
但是上面的代码片段工作正常,直到10.8 Mac OSX,没有必要重启Mac机器并在代码中执行“[NSApp setApplicationIconImage:icon]”行之后。 default_Icon被new_icon_file替换。
如果上述代码段在运行时更改应用程序图标有问题,请纠正我吗?或者,有没有其他方法可以在10.9 Mac OSX中运行时更改AppIcon?
感谢。
答案 0 :(得分:2)
此方法无意更改finder应用程序图标。
文档说明:
“...暂时更改停靠栏应用磁贴中的应用图标。”
所以如果它起作用是一个错误/至少未指明的行为。
什么有效是为app dir设置图标:
使用NSWorkspace
有- (BOOL)setIcon:(NSImage *)image forFile:(NSString *)fullPath options:(NSWorkspaceIconCreationOptions)options
我头顶的例子
[[NSWorkspace sharedWorkspace] setIcon:[[NSBundle mainBundle] bundlePath] options:0];