2013-04-30 11 views
8


私はiOSアプリケーション用にStatic Libraryを作成しています。私はほぼ完成しましたが、リソースに問題があります。スタティックライブラリを使用してリソースファイルを転送する方法(バンドル内のリソースをラップする方法)

マイスタティックライブラリは、多数のイメージとサウンドファイルを使用します。スタティックライブラリでどのように転送できますか?

私はバンドルにまとめて、.aファイルに記載しています。しかし、バンドルファイルにイメージとサウンドファイルをラップする方法はわかりません。私が何をしたか

  • 私は多くのことを探索したが、いずれかの有用なリンクを見つけることができませんでした。
  • 私はConceptual CFBundlesを取得しましたが、私の問題の解決策は見つかりませんでした。
  • 私はXCodeのために利用可能なファイルテンプレートをチェックしますが、複数のバンドルし、それを行うにはいくつかの異なる方法でアプリケーションを構築するには、いくつかの良い理由がありSettings Bundle.

答えて

9

以外の任意のバンドルタイプを見ていませんでした。私の経験する最良の方法は、オープンのXcodeで、新しいバンドルプロジェクトを作成します。

  1. 選択:ファイル - >新規プロジェクト... - >グループマックOSX - >フレームワーク&ライブラリ - >バンドル(!)。リソースファイルをプロジェクトに追加します。
  2. 他のiPhoneアプリをビルドするときにバンドルを構築します。
  3. このプロジェクトを静的ライブラリプロジェクトに追加し、ライブラリが変更されるたびに再構築することができます。バンドル自体はライブラリファイルにリンクされないことを知っておく必要があります。
  4. あなたのアプリプロジェクトで.bundleファイルを通常のリソースファイル(Add - > Existing Files ... - >上記のビルドされた.bundleファイルを見つけて選択してください)にプロジェクトに追加してください。

例:

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

詳細なヘルプについては、あなたがチェックすることができ、これらの良い記事

  1. iOS Library With Resources

  2. Resource Bundles

あなたのお役に立てば幸いです。

+0

ありがとうございました。答え: –

+0

hmmm。ウェルカムMidhun :-) –

+0

ひとつ:imageWithContentsOfFileのパフォーマンスが悪い場合は、imageNamedをキャッシュを使用しているように使用するほうが速くなります。:)さらに、単純なコードで同じ結果を得ることができます。 '[UIImage imageNamed :[NSString stringWithFormat:@ "my.bundle /%@"、imageName]]; '右のバンドル名を入れてください –

関連する問題