2013-04-30 11 views
8


Sto creando un Static Library per iOS applicazioni. L'ho quasi completato, ma c'è un problema con le risorse.Come trasferire file di risorse con la Libreria statica (Come racchiudere le risorse in un pacchetto)?

La mia biblioteca statica utilizza molte immagini e file audio. Come posso trasferirlo con la mia libreria statica?

So che possiamo avvolgerlo in un fascio e dare lungo il file .a. Ma non so come avvolgere Immagini e file audio in un file Bundle.

Quello che ho fatto:

  • ho cercato un sacco, ma non riusciva a trovare tutti i link utili.
  • Ho ottenuto il riferimento Conceptual CFBundles, ma non ho trovato alcuna soluzione per il mio problema.
  • Ho controllato i modelli di file disponibili per XCode, ma non ha visto alcun tipo fascio diverso Settings Bundle.

risposta

9

Ci sono molte buone ragioni per costruire un'applicazione con più fasci e diversi modi per farlo. Per la mia esperienza il modo migliore è aperta Xcode e creare un nuovo progetto di bundle:

  1. Seleziona: File -> Nuovo progetto ... -> Gruppo Mac OSX -> quadro & Libreria -> Bundle (!). Aggiungi i tuoi file di risorse al progetto.
  2. Costruisci il pacchetto mentre crei altre app per iPhone.
  3. È possibile aggiungere questo progetto al progetto della libreria statica e ricostruirlo per tutto il tempo in cui la libreria viene modificata. Devi sapere che il pacchetto stesso non sarà collegato al tuo file di libreria.
  4. Nei tuoi progetti App Aggiungi il file .bundle al progetto come un file di risorse ordinarie (Aggiungi -> file esistenti ... -.> Individuare e selezionare il file di cui sopra .bundle costruito Non copiare).

Esempio:

// Static library code: 
#define MYBUNDLE_NAME  @"MyResources.bundle" 
#define MYBUNDLE_IDENTIFIER @"eu.oaktree-ce.MyResources" 
#define MYBUNDLE_PATH  [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME] 
#define MYBUNDLE   [NSBundle bundleWithPath: MYBUNDLE_PATH] 

// Get an image file from your "static library" bundle: 

- (NSString *) getMyBundlePathFor: (NSString *) filename 
{ 
     NSBundle *libBundle = MYBUNDLE; 
     if(libBundle && filename){ 
      return [[libBundle resourcePath] stringByAppendingPathComponent: filename]; 
     } 
     return nil; 
} 

// ..... 
// Get an image file named info.png from the custom bundle 
UIImage *imageFromMyBundle = [UIImage imageWithContentsOfFile: [self getMyBundlePathFor: @"info.png"] ]; 

Per ulteriori informazioni è possibile controllare questi buoni articoli

  1. iOS Library With Resources

  2. Resource Bundles

Spero che ti aiuti.

+0

Grazie per la risposta :) –

+0

hmmm. benvenuto Midhun :-) –

+0

una cosa: imageWithContentsOfFile è scadente in caso di prestazioni è meglio usare imageNamed in quanto usa la cache in modo che possa essere più veloce :) Inoltre puoi ottenere lo stesso risultato con meno codice in modo semplice: '[UIImage imageNamed : [NSString stringWithFormat: @ "my.bundle /% @", imageName]]; 'e semplicemente il nome del pacchetto corretto –

Problemi correlati