2014-09-10 40 views
1

我正在開發一個項目,該項目需要在運行時更改App圖標。我已將default_icon.icns設置爲默認App圖標。在Mac OSX中,應用程序圖標在運行時未更改10.9.4

現在,當我想更改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圖標在運行時不會改變,直到我重新啓動我的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?

謝謝。

+0

不會改變它在頂部的- (BOOL)setIcon:(NSImage *)image forFile:(NSString *)fullPath options:(NSWorkspaceIconCreationOptions)options

例子碼頭?該方法是不是改變它在發現者,但只在碼頭 – 2014-09-10 12:41:08

+0

@ Daij-Djan我不想在碼頭上顯示應用程序圖標,所以我設置爲應用程序是代理(UIElement)在info.plist。 但它在10.8或更早版本的OSX上工作。 – varun 2014-09-10 12:57:06

+0

刪除xcode標籤,因爲它不是IDE特定的 – 2014-09-10 14:43:23

回答

2

此方法並不打算更改查找器應用程序圖標。

文檔狀態:
「...暫時更改碼頭應用程序磁貼中的應用程序圖標。」

所以如果它的工作,這是一個錯誤/至少未指明的行爲。


什麼工作是設置的圖標的應用程序目錄:

使用NSWorkspace
有我的頭
[[NSWorkspace sharedWorkspace] setIcon:[[NSBundle mainBundle] bundlePath] options:0];

+0

你可以請教我如何更改MacOSX 10.9中的發現者應用程序圖標? – varun 2014-09-11 07:10:03

+0

是的,用一種方式編輯代碼來設置圖標 – 2014-09-11 07:45:38

+0

@varun是否同時更新了dock圖標?當我以編程方式替換.app中的圖標圖像,然後切換「Keep in Dock」,它使停靠欄圖標更新它的圖標到新圖標,但我無法弄清楚如何以編程方式切換「Keep in Dock」 – Noitidart 2015-02-05 16:05:26

相關問題