2015-02-28 14 views
6

Sto sviluppando un quadro iOS che include risorse di immagini, che io chiamo i metodi di seguito nella framwork,Come sviluppare un framework iOS che include risorse di immagine?

crossImage = [UIImage imageNamed:@"cross"]; 
arrowImage = [UIImage imageNamed:@"arrow"]; 

e poi ho costruire una demo per testare il mio quadro, ma trovare crossImage e arrowImage sono entrambi pari a zero; In seguito, ho trovato il metodo imageNamed: per cercare immagini nella directory dell'app e non nel framework, quindi posso correggerlo aggiungendo le due immagini al progetto demo. Tuttavia, è a malapena elegante. quindi qualche altra soluzione per indirizzare le immagini nel mio framework?

risposta

0

Finalmente, ho creare un pacchetto per contenere tutte le risorse di immagine, e mettiamo a disposizione * .framework e * .bunlde, che è più elegante.

+1

Puoi essere più chiaro su come lo stai fornendo? Il codice di esempio sarebbe utile. – Herbal7ea

20

È possibile caricare l'immagine da utilizzare quadro:

+ (UIImage *)imageNamed:(NSString *)name 
       inBundle:(NSBundle *)bundle 
compatibleWithTraitCollection:(UITraitCollection *)traitCollection 

metodo.

Nella tua quadro classe scrivere come:

NSBundle *frameWorkBundle = [NSBundle bundleForClass:[self class]]; 
UIImage *arrow = [UIImage imageNamed:@"arrow" inBundle:frameWorkBundle compatibleWithTraitCollection:nil]; 
UIImage *cross = [UIImage imageNamed:@"cross" inBundle:frameWorkBundle compatibleWithTraitCollection:nil]; 

consultare UIImage Class Reference per ulteriori informazioni su questo metodo.

+0

Il metodo suggerito supporta solo iOS 8.0 e versioni successive, cosa succede se su iOS 7.0 e 6.0? –

+1

@GaojinHsu: AFAIK in iOS 7 e 6.0 Apple non supporterà la creazione di framework personalizzati. Utilizza la Libreria statica e il pacchetto personalizzato per questo scopo –

1

È anche possibile caricare le immagini utilizzando:

[[UIImage alloc] initWithContentsOfFile:path]; 

Il percorso si desidera generare dal percorso fascio. Qualcosa di simile:

NSBundle *bundle = [NSBundle bundleForClass:[YourFramework class]]; 
NSString* path = [bundle pathForResource:@"cross.jpg" ofType:nil]; 
1

Questo funziona solo quando le immagini non si trova in .xcasserts.

UIImage *image = [UIImage imageNamed:@"YourFramework.framework/imageName"] 
Problemi correlati