2009-08-31 2 views
12

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

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

NSImage * iconImage = [MyApplication defaultIconAsImage]; 

Но я уверен, что это не , что легко :)

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

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

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

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

ответ

36
+7

ты серьезно? О, Боже. Я собираюсь смириться с головой. Спасибо вам за это. –

+0

блестящий !!!!!!!!!!!! – SpaceDog

+1

Именованный NSApplicationIcon в интерфейсе Builder –

15

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

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

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

+0

Это полезно знать. Спасибо –

+0

«И» выше смущает меня в вашем предложении о путях, потому что я вижу только один параметр - «iconForFile», а не два. Вы можете объяснить это немного больше? – Volomike

+1

@Volomike Да, это немного запутанно. Я думаю, что Abizern означал «или», а не «и» – Mark

5

Обратите внимание, что -[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)

+0

безупречный! Ты спас мой бекон. – SpaceDog

+0

Это также хорошо, если вы хотите получить все доступные представления, поскольку '[NSApp applicationIconImage]', кажется, возвращает только 1. –

Смежные вопросы