2013-04-30 11 views
8


Ich erstelle eine Static Library für iOS Anwendungen. Ich habe es fast abgeschlossen, aber es gibt ein Problem mit den Ressourcen.So übertragen Sie Ressourcendateien mit der statischen Bibliothek (Umbruch von Ressourcen im Bundle)?

Meine statische Bibliothek verwendet viele Bilder und Sounddateien. Wie kann ich es mit meiner statischen Bibliothek übertragen?

Ich weiß, wir können es auf ein Bündel wickeln und es entlang der Datei .a geben. Aber ich weiß nicht, wie man Bilder und Sounddateien in eine Bundle-Datei einpackt.

Was ich tat:

  • ich viel gesucht, konnte aber keine nützliche Links.
  • Ich habe Conceptual CFBundles Referenz, fand aber keine Lösung für mein Problem.
  • überprüfte ich die Dateivorlagen für XCode verfügbar, sah aber keinen Bündel anderer Typ als Settings Bundle.

Antwort

9

Es gibt mehrere gute Gründe, eine Anwendung mit mehreren Bündeln und verschiedene Möglichkeiten, es zu tun zu bauen. Zu meiner Erfahrung ist der beste Weg offen Xcode und erstellen Sie ein neues Bündel Projekt:

  1. Wählen Sie: Datei -> Neues Projekt ... -> Gruppe Mac OSX -> Rahmen & Bibliothek -> Bundle (!). Fügen Sie Ihre Ressourcendateien dem Projekt hinzu.
  2. Erstellen Sie das Bundle, während Sie andere iPhone-Apps erstellen.
  3. Sie können dieses Projekt zu Ihrem statischen Bibliotheksprojekt hinzufügen und es bei jeder Änderung der Bibliothek neu erstellen. Sie müssen wissen, dass das Bundle selbst nicht mit Ihrer Bibliotheksdatei verknüpft ist.
  4. Fügen Sie in Ihren App-Projekten die .bundle-Datei Ihrem Projekt als normale Ressourcendatei hinzu (Hinzufügen -> Vorhandene Dateien ... -> suchen und wählen Sie die oben erstellte .bundle-Datei aus. Kopieren Sie sie nicht).

Beispiel:

// 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"] ]; 

Für weitere Hilfe können Sie diese guten Artikel überprüfen

  1. iOS Library With Resources

  2. Resource Bundles

Hoffe es hilft dir.

+0

Vielen Dank für Ihre Antwort :) –

+0

hmmm. Willkommen Midhun :-) –

+0

eine Sache: imageWithContentsOfFile ist schlecht im Falle der Leistung ist es besser, imageNamed zu verwenden, da es Caching verwendet, damit es schneller sein kann :) zusätzlich können Sie dasselbe Ergebnis mit weniger Code durch einfaches erreichen: '[UIImage imageNamed : [NSString stringWithFormat: @ "my.bundle /% @", imageName]]; 'und einfach den richtigen Bundle-Namen setzen –