ここで明らかな何かが欠けている可能性がありますが、次の問題を解決できませんでした。
someimage.pngやsomeimage@2x.pngなど、通常の画面と網膜画面の両方の画像リソースを含むプロジェクトがあり、これらは別のバンドルに保存されています。プロジェクトをビルドすると、Xcode はそれらを単一のマルチページ tiff ( imageName.tiff
) に自動的にパックします。ファインダーで確認しました。実際には、両方の画像を含むマルチページ tiff です。ただし、ここで問題が発生します。適切なリソースをロードするのに苦労しています。
私がすることは:
NSString * imageName = ... ;
NSLog(@"imageName: %@", imageName);
UIImage * someImage = [UIImage imageNamed: imageName];
また、リソースを含むバンドルを返す補助メソッドも好きです。
+(NSBundle *) resourcesBundle
{
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"MyResourcesBundle" withExtension:@"bundle"]];
return bundle;
}
次のことを試しましたimageName
:
imageName = [[AuxClass resourcesBundle] pathForResource:@"someimage" ofType:@"png"];
この場合、私はnull
for を持っていimageName
ます。
imageName = [[AuxClass resourcesBundle] pathForResource:@"someimage" ofType:@"tiff"];
この場合、実際の画像パスが返されますが、imageWithContentsOfFile
代わりにを使用した場合にのみ機能imageNamed
し、適切なリソースを使用しません。画面の種類に関係なく、Retina のリソースをロードします。
ファイルタイプを省略した場合(@2x
リソースを追加する前に行ったように、問題なく機能し、最初に試して、機能すると確信していました)
imageName = [NSString stringWithFormat: @"%@/%@",
@"MyResourcesBundle.bundle"",
@"someimage" ];
何も読み込まれません。
pathForResource:
「.tiff」拡張子を追加すると、非網膜画面のリソースを無視して、網膜のリソースが読み込まれるのと同じ効果があります。
それで、私は何が欠けていますか?画像をロードする正しい方法は何ですか?