objective-c - Mac OSX 10.9.4 中的应用程序图标在运行时不会更改

标签 objective-c macos cocoa

我正在开发一个项目,需要在运行时更改应用程序图标。我已将 default_icon.icns 设置为默认应用程序图标。

现在,当我想更改应用程序的图标时,我在 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 上运行此项目时,应用程序图标在运行时不会更改,直到我重新启动 Mac 计算机。 重新启动 mac 计算机后,应用程序 default_icon 被替换为 new_icon_file

但是上面的代码片段在 10.8 Mac OSX 之前都可以正常工作,无需重新启动 Mac 机器,并且在执行代码中的 “[NSApp setApplicationIconImage:icon]” 行后。 default_Icon 被替换为 new_icon_file。

如果上述在运行时更改应用程序图标的代码片段有任何问题,请纠正我?或者,是否有其他方法可以在 10.9 Mac OSX 中运行时更改 AppIcon?

谢谢。

最佳答案

此方法并不意味着更改查找器应用程序图标。

文档指出:
“...暂时更改 Dock 应用程序磁贴中的应用程序图标。”

所以,如果它有效,那就是一个错误/至少是未指定的行为。

<小时/>

有效的是设置应用程序目录的图标:

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

我头顶的例子
[[NSWorkspace共享工作空间] setIcon:[[NSBundle mainBundle]bundlePath]选项:0];

关于objective-c - Mac OSX 10.9.4 中的应用程序图标在运行时不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25765544/

相关文章:

objective-c - objc 泄漏行为我无法解释

objective-c - 将 kal 日历实现到选项卡栏应用程序中

ios - 我可以启用警告来比较枚举值和非枚举值吗?

c++ - 奇怪的Qt include OSX下的目录结构

iphone - 我应该使用什么 OSX/XCode 版本控制系统来进行 iPhone 开发?

python - pycharm向前或向后移动光标1个字

objective-c - NSWindow 在单击、调整大小等之前不会绘制

cocoa - 如何以编程方式重置 cocoa NSSearchField?

ios - 无法通过 iOS 中的 AVPlayer 播放文档目录中的音乐?

ios - 重复符号错误 - Google 登录和 Google Analytics 两者