2013-04-30 9 views
8


Tworzę Static Library dla iOS aplikacje. Prawie go ukończyłem, ale jest problem z zasobami.Jak przesyłać pliki zasobów za pomocą Biblioteki statycznej (jak owijać zasoby w pakiecie)?

My Static Library wykorzystuje wiele obrazów i plików dźwiękowych. Jak mogę go przenieść z moją biblioteką statyczną?

Wiem, że możemy owinąć go na paczkę i dać go razem z plikiem .a. Ale nie wiem, jak zawinąć obrazy i pliki dźwiękowe w pliku pakietu.

Co zrobiłem:

  • Szukałem dużo, ale nie można znaleźć żadnych użytecznych linków.
  • Mam odniesienie Conceptual CFBundles, ale nie znalazłem żadnego rozwiązania dla mojego problemu.
  • Sprawdziłem szablonów plik dostępny dla XCode, ale nie widział żadnego rodzaju wiązki innej niż Settings Bundle.

Odpowiedz

9

Istnieje kilka dobrych powodów, aby zbudować aplikację z wieloma wiązkami i kilka różnych sposobów, aby to zrobić. Do mojego doświadczenia wynika, że ​​najlepszym sposobem jest otwarta Xcode i utworzyć nowy projekt zestawie:

  1. wybierz: File -> New Project ... -> Grupa Mac OSX -> Framework & Biblioteka -> Bundle (!). Dodaj pliki zasobów do projektu.
  2. Zbuduj pakiet podczas tworzenia innych aplikacji na iPhone'a.
  3. Możesz dodać ten projekt do swojego projektu biblioteki statycznej i przebudowywać go przez cały czas, gdy biblioteka jest zmieniana. Musisz wiedzieć, że sam pakiet nie będzie połączony z twoim plikiem bibliotecznym.
  4. W swoich projektach App Dodaj plik .bundle do projektu jako plik zasobów zwykłą (Add -> istniejące pliki ... -.> Znajdź i wybierz powyższy wbudowany plik .bundle Nie kopiuj go).

Przykład:

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

Aby uzyskać więcej pomocy można sprawdzić te dobre artykuły

  1. iOS Library With Resources

  2. Resource Bundles

Mam nadzieję, że ci to pomoże.

+0

Dziękuję za odpowiedź :) –

+0

hmmm. Witamy Midhun :-) –

+0

jedno: imageWithContentsOfFile jest słaba wydajność w przypadku lepiej jest używać imageNamed gdyż wykorzystuje buforowanie więc może być szybciej :) dodatkowo można osiągnąć ten sam rezultat z mniej kodu przez prosty: '[UIImage imageNamed [NSString stringWithFormat: @ "my.bundle /% @", imageName]]; 'i po prostu umieścić odpowiednią nazwę wiązki –

Powiązane problemy