NSCustomResource kesako ?

v1nce29

Membre confirmé
17 Octobre 2011
35
22
Je regarde des xibs et je vois des noms de classe qui me sont inconnus.
NSWindowTemplate j'imagine que ça mappe d'une façon ou d'une autre sur NSWindow
mais NSCustomResource que l'on trouve sur un button cell, ça se traduit comment ?
Idem pour NSButtonImageSource.
J'imagine que ce sont des NSImage ?
 
Dernière édition:

Lio70

Fitzcarraldo de l'IT
Club MacG
16 Janvier 2004
2 396
1 265
52
Cracovie
NSCustomResource concerne en effet l'icône apparaissant sur un bouton. C'est souvent une NSImage mais cela peut prendre la forme également d'un fichier PDF que tu importeras dans ton projet. Par exemple, il y a quelques années, j'avais besoin d'une icône moderne représentant une imprimante pour un bouton "Imprimer" devant se trouver sur un panneau de mon app. Elle ne figurait pas dans la banque d'icônes Apple disponible dans Xcode. Donc j'ai fait une icône de 28x28 pixels et je l'ai sauvée en PDF. Je l'ai ensuite importée dans mon projet et je l'ai assignée au bouton.
 

v1nce29

Membre confirmé
17 Octobre 2011
35
22
Merci pour ta réponse. Cela avait nécessité que tu fasses un peu de code ? Ou bien tu avais tout fait via l'interface de xbuild ?

J'avais identifié la fonction des champs. En revanche c'est plus leur serialisation qui m'interroge.
Pourquoi on a une classe NSCustomResource
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
Et pas directement une classe NSImage
<object class="NSImage" key="NSNormalImage">
<string key="NSResourceName">NSSwitch</string>
</object>


De la même manière, l'alternate image est définie comme
<object class="NSButtonImageSource" key="NSAlternateImage">
<string key="NSImageName">NSSwitch</string>
</object>

Pourquoi on n'a pas plutôt
<object class="NSImage" key="NSAlternateImage">
<string key="NSImageName">NSSwitch</string>
</object>

Ce qui me gêne ce sont surtout les NSButtonImageSource et NSCustomResource dont je ne trouve de définition nulle part. Ou alors ce sont des classes spécifiques (et "internes") à XCode. Ce seraient alors les seules exceptions (avec nswindowtemplate) tous les autres objets sérialisés semblant appartenir à appKit.
 

Lio70

Fitzcarraldo de l'IT
Club MacG
16 Janvier 2004
2 396
1 265
52
Cracovie
Je ne commenterai pas le code que tu as posté car je ne développe plus et j'ai un peu oublié, et je n'ai plus la doc d'Apple.

Pour répondre à ta question: aucun code nécessaire.
Il ne suffit pas de copier le fichier dans le dossier du projet via Finder, il faut aussi l'importer via Xcode pour que ton fichier de projet prenne conscience que cette nouvelle ressource existe. Ensuite, tu sélectionnes le bouton sur l'interface et, dans ses paramètres, tu cliques pour sélectionner la nouvelle icône.
 
Dernière édition: