在Mac OSX 10.9.4中,应用程序图标在运行时没有变化

时间:2014-09-10 12:30:51

标签: objective-c macos cocoa

我正在开发一个项目,需要在运行时更改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?

感谢。

1 个答案:

答案 0 :(得分:2)

此方法无意更改find​​er应用程序图标。

文档说明:
“...暂时更改停靠栏应用磁贴中的应用图标。”

所以如果它起作用是一个错误/至少未指明的行为。


什么有效是为app dir设置图标:

使用NSWorkspace
- (BOOL)setIcon:(NSImage *)image forFile:(NSString *)fullPath options:(NSWorkspaceIconCreationOptions)options

我头顶的例子
[[NSWorkspace sharedWorkspace] setIcon:[[NSBundle mainBundle] bundlePath] options:0];