2012-08-01 13 views
15

Ho creato un framework esterno e sto cercando di utilizzare alcune immagini che si trovano nella directory delle risorse del framework. Il framework non viene copiato all'interno dell'applicazione ma viene semplicemente fatto riferimento ad esso. Come posso utilizzare UIImage di conseguenza dalla cartella delle risorse xyz.framework?Come caricare risorse da un framework esterno

Grazie

risposta

31

Quello che dovete fare è caricare il bundle per il quadro, e quindi accedere alle risorse utilizzando l'oggetto NSBundle.

Per esempio, se esiste un quadro che definisce una classe "FrameworkClass", siamo in grado di fare:

NSBundle *frameworkBundle = [NSBundle bundleForClass:[FrameworkClass class]]; 
NSString *resourcePath = [frameworkBundle pathForResource:@"an_image" ofType:@"jpeg"]; 
UIImage *image = [UIImage imageWithContentsOfFile:resourcePath]; 

Questo dovrebbe più o meno fare quello che vuoi.

+2

Questo funziona per me, la risposta accettata non – jjxtra

+1

D'accordo con @PsychoDad, risposta accettata non funziona per me b/c [NSBundle mainBundle] torna nullo quando chiamando dal codice quadro. – stonedauwg

3

è possibile fare riferimento a risorse Framework come segue:

[[NSBundle mainBundle] pathForResource:@"FI.framework/Resources/FileName" 
           ofType:@"fileExtension"]; 

nota, qui FI è il tuo nome framework.

rif. Link: http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/

+0

Non ho copiato il framework all'interno del progetto ma piuttosto ho fatto un riferimento, questo funzionerebbe anche senza di esso? Il framework viene aggiunto al bundle in fase di compilazione? Solo curioso. – kforkarim

+0

Durante la creazione del framework, una volta che lo si farà riferimento, sarà una parte del pacchetto. Quindi, durante la struttura dell'edificio, tutte le risorse collegate sarebbero incluse nel framework. – DShah

+0

DShah, grazie per averlo chiarito. Non stavo riferendo la struttura all'interno delle risorse che era il problema, ora il problema è stato risolto. Grazie. – kforkarim

2

Swift 3:

let bundle = Bundle(for: SomeFrameworkClass.self as AnyClass) 

if let path = bundle.path(forResource: "test", ofType: "png") { 
    if let image = UIImage(contentsOfFile: path) { 
     // do stuff 
    } 
} 
+1

Salvato il mio giorno. Grazie. – drulabs

Problemi correlati