2009-08-31 3 views
12

J'ai un fichier d'icône personnalisé (MyApp.icns) mis en place pour mon application Cocoa. Comment puis-je accéder à une représentation NSImage de l'icône depuis mon application?Comment puis-je charger une représentation NSImage de l'icône pour mon application?

Quelque chose comme ce qui suit serait parfait:

NSImage * iconImage = [MyApplication defaultIconAsImage]; 

Mais je suis sûr que ce n'est pas que facile :)

Je peux, bien sûr, obtenir un chemin vers l'icône fichier comme suit:

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

Mais il me semble qu'il devrait y avoir une sorte de moyen standard pour accéder à la fichier icône pour l'application, autre que l'appeler par son nom, car le nom pourrait changer.

Quelle est la bonne façon de faire cela?

Répondre

36
+7

Êtes-vous sérieux? Oh cher. Je vais aller pendre ma tête de honte. Merci pour ça. –

+0

brillant !!!!!!!!!!!! – SpaceDog

+1

Nommé NSApplicationIcon dans Interface Builder –

15

Juste pour être complet - Voici comment vous obtenez l'icône pour toute application ou d'un fichier sur votre système.

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

passe dans le chemin du faisceau de demande d'une icône d'application ou le chemin d'accès à un fichier pour l'icône associée au fichier.

+0

C'est bon à savoir. Merci –

+0

Le "et" ci-dessus me confond sur votre phrase sur les chemins parce que je vois seulement un paramètre - 'iconForFile', pas deux. Pouvez-vous expliquer cela un peu plus? – Volomike

+1

@Volomike Oui, c'est un peu déroutant. Je pense qu'Abizern signifiait 'ou', pas 'et' – Mark

5

Notez que -[NSApplication applicationIconImage] ne renvoie pas l'icône correcte lorsqu'une icône personnalisée est collée sur l'application. Ensuite, vous devez faire:

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

(référence le code icône du dock j'ai écrit pour Chrome: http://src.chromium.org/svn/trunk/src/chrome/browser/ui/cocoa/dock_icon.mm)

+0

parfait! Tu as sauvé mon bacon. – SpaceDog

+0

Ceci est également utile si vous voulez obtenir toutes les représentations disponibles car '[NSApp applicationIconImage]' semble ne renvoyer que 1. –

Questions connexes