Как я могу загрузить представление значка NSImage для моего приложения? - PullRequest
12 голосов
/ 31 августа 2009

У меня есть настроенный файл значков (MyApp.icns) для моего приложения Cocoa. Как я могу получить представление NSImage значка из моего приложения?

Что-то вроде следующего было бы идеально:

NSImage * iconImage = [MyApplication defaultIconAsImage];

Но я уверен, что это не так просто :)

Конечно, я могу получить путь к файлу иконки следующим образом:

NSString * iconPath = [[NSBundle mainBundle]
                       pathForResource:@"MyApp" ofType:@"icns"];

Но мне кажется, что должен быть какой-то стандартный способ доступа к файлу значка приложения, кроме вызова его по имени, поскольку имя может измениться.

Как правильно это сделать?

Ответы [ 3 ]

38 голосов
/ 31 августа 2009
17 голосов
/ 02 сентября 2009

Просто для полноты - так вы получаете значок для любого приложения или файла в вашей системе.

NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:@"path"];

Передайте путь к комплекту приложения для значка приложения или путь к файлу для значка, связанного с файлом.

6 голосов
/ 03 сентября 2011

Обратите внимание, что -[NSApplication applicationIconImage] не возвращает правильный значок, когда пользовательский значок вставляется в приложение. Тогда вам нужно сделать:

NSString* appPath = [[NSBundle mainBundle] bundlePath];
NSImage* appIcon = [[NSWorkspace sharedWorkspace] iconForFile:appPath];

(Ссылка на код иконки док-станции, который я написал для Chromium: http://src.chromium.org/svn/trunk/src/chrome/browser/ui/cocoa/dock_icon.mm)

...