4

私のiPhoneアプリでは、ObjectiveCファイルと画像を含む静的ライブラリにリンクしています。静的ライブラリから画像をロードすることは可能ですか?私が試してみました

[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];

ただし、明らかにイメージはメインバンドルになく、静的ライブラリにあり、NSBundleクラスはメインバンドルと既知のパスを持つバンドルへのアクセスのみを提供しているようです。iPhoneの静的ライブラリから画像をロードする方法はありますか?

4

3 に答える 3

12

最も簡単な方法は、画像をインライン文字配列に格納することです。

const char imageData[] = { 0x00, 0x01, 0xFF, ... };

そして後であなたがそれを必要とするとき:

UIImage *image = [UIImage imageWithData:[NSData dataWithBytesNoCopy:imageData length:sizeof(imageData) freeWhenDone:NO]];

画像のバイナリデータ(PNGまたはJPEGとして保存した後)を手動で文字配列に変換する必要があります(またはそのためのスクリプトを作成します)

于 2009-09-10T02:46:26.977 に答える
1

「画像は[...]静的ライブラリにあります」という意味が明確ではありません。静的ライブラリはプレーン ファイル (拡張子は .a) で、アーカイブされたオブジェクト ファイルが含まれています。一方、バンドルはディレクトリ階層 (実行可能ファイルやその他のリソースを含む) です。

スタティック ライブラリをリンクすると、ライブラリのコードが実行可能ファイルに直接インクルードされます。ファイルはアプリケーション バンドルにコピーされないため、イメージをコピーする方法はありません。

スタティック ライブラリにイメージ ファイルがある場合は、Xcode でコピー ファイル ビルド フェーズをターゲットに追加することで、単純にアプリケーション バンドルにコピーできます。

于 2009-09-09T21:12:32.133 に答える
0

静的ライブラリ コピー ファイルのビルド フェーズで絶対パスを使用し、それをクライアント アプリケーションにポイントしますか? このようなことを試しましたが、まだ画像にアクセスできません。

于 2010-03-16T19:17:17.387 に答える