Supponiamo di disporre di un framework iOS o Mac esistente che chiameremo Test.framework. Questo framework è stato compilato e collegato con successo (un trucco è stato fatto per lipo sia per i386 che per armv6/7 arch per la parte iOS) e funziona perfettamente.Aggiungere un'immagine (o altre risorse) a un Mac o iOS Framework
Ora voglio aggiungere un'immagine chiamiamolo 'test.png
'. Ho copiato nella cartella Risorse del mio quadro in modo da avere la seguente struttura:
ls Test.framework
- Headers -> Versions/Current/Headers
- Resources -> Versions/Current/Resources
- Test -> Versions/Current/Test
- Versions
ls Test.framework/Resources
- Info.plist
- test.png
Eppure, quando creo un progetto utilizzando il mio quadro non posso accedere a tale immagine.
ho provato:
[UIImage imageNamed:@"test.png"]
[UIImage imageNamed:@"Test.framework/test.png"]
[UIImage imageNamed:@"Test.framework/Resources/test.png"]
Ma niente ha funzionato che mi dava sempre indietro un oggetto nil
.
Qualche idea?
EDIT
Dopo molte ulteriori indagini sembra quello che sto cercando di realizzare non può essere fatto su iOS. Il motivo è che il bundle di applicazione finale (la .app) non copia i framework privati in cui verranno compilate le applicazioni per Mac OS.
Questo è ulteriormente dettagliato nello iOS Bundle Structures documentation.
Grazie a Rob Keniger e xuzhe per il loro apprezzato aiuto. Attribuirò xuzhe per la risposta in quanto è la risposta più appropriata al mio problema originale (anche se il commento di Rob mi ha fatto scavare più in profondità nel problema)
dicendo che "The" imageNamed: "il metodo è solo per le immagini nel pacchetto App" non è completamente vero. Se aggiungo un pacchetto (ad esempio test.bundle) al mio progetto e questo pacchetto contiene test.png, allora [UIImage imageNamed: @ "test/test.png"] funzionerà correttamente. – apouche
tuttavia la tua soluzione è interessante, ma non ho il framework in bundle nella mia applicazione (può essere installato nelle cartelle framework della commissione) – apouche
@apouche Se stai aggiungendo un bundle nel pacchetto App e quindi chiama '[UIImage imageNamed: @ "test.bundle/test.png"]; 'è OK perché il test.bundle è anche nel bundle principale. Se non lo è, dubito che "imageNamed:" possa trovarlo. – xuzhe