2009-08-31 10 views
12

Tengo un archivo de icono personalizado (MyApp.icns) configurado para mi aplicación Cocoa. ¿Cómo puedo acceder a una representación NSImage del icono desde mi aplicación?¿Cómo puedo cargar una representación de NSImage del ícono para mi aplicación?

algo como lo siguiente sería perfecto:

NSImage * iconImage = [MyApplication defaultIconAsImage]; 

Pero estoy seguro de que no es fácil que :)

puedo, por supuesto, obtener una ruta de acceso al icono archivo de la siguiente manera:

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

Pero me parece que debe haber algún tipo de forma estándar para acceder a la archivo de icono para la aplicación, que no sea llamarlo por nombre, ya que el nombre podría cambiar.

¿Cuál es la forma correcta de hacerlo?

Respuesta

36
+7

¿En serio? Oh querido. Voy a agachar la cabeza avergonzado. Gracias por eso. –

+0

genial !!!!!!!!!!!! – SpaceDog

+1

NSApplicationIcon con nombre en Interface Builder –

15

simplemente para la corrección - Esta es la forma de obtener el icono de cualquier aplicación o archivo en el sistema.

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

paso en el camino hacia el paquete de aplicaciones para el icono de una aplicación o la ruta a un archivo para el icono asociado con el archivo.

+0

Eso es bueno saber. Gracias –

+0

El "y" de arriba me confunde en tu oración sobre rutas porque solo veo un parámetro - 'iconForFile', no dos. ¿Puedes explicar esto un poco más? – Volomike

+1

@Volomike Sí, es un poco confuso. Creo que Abizern significaba 'o', no 'y' – Mark

5

Tenga en cuenta que -[NSApplication applicationIconImage] no devuelve el icono correcto cuando se pega un icono personalizado en la aplicación. Luego hay que hacer:

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

(Haga referencia al código de icono de la base que escribí para Cromo: http://src.chromium.org/svn/trunk/src/chrome/browser/ui/cocoa/dock_icon.mm)

+0

¡perfecto! Usted salvó mi tocino. – SpaceDog

+0

Esto también es bueno si quiere obtener todas las representaciones disponibles ya que '[NSApp applicationIconImage]' parece devolver solo 1. –

Cuestiones relacionadas