15

私の iOS リソース フォルダーには、次の画像があります。

foo~iphone.png
foo@2x~iphone.png
foo~ipad.png
foo@2x~ipad.png

私はそれらをロードします:

NSString *fileName = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];

実験的に:

iPhone ではfilename/path/to/bundle/foo~iphone.pngR​​etina iPhone では@2xバージョンをロードします。

iPad ではfilename/path/to/bundle/foo~ipad.pngR​​etina iPad ではバージョンをロードします@2x

つまり、期待どおりのイメージをロードしますがpathForResource、デバイス修飾子をimageWithContentsOfFile処理し、スケール修飾子を処理します。

理由を知りたいです。のドキュメントpathForResourceデバイス修飾子について何も述べておらず、 のドキュメントimageWithContentsOfFileスケール修飾子について何も述べていません。

各機能が何をするかを正確に示す個別のドキュメントはありますか?

4

1 に答える 1

14

の説明imageWithContentsOfFileは、ドキュメント自体ではなく、関連するドキュメントにあります。UIImage

高解像度の画面を備えたデバイスでは、imageNamed:、imageWithContentsOfFile:、およびinitWithContentsOfFile:メソッドは、名前に@2x修飾子が含まれる要求された画像のバージョンを自動的に検索します。見つかった場合は、代わりにその画像を読み込みます。特定の画像の高解像度バージョンを提供しない場合でも、画像オブジェクトは標準解像度の画像(存在する場合)をロードし、描画中に拡大縮小します。

UIImageオブジェクトは、画像を読み込むときに、画像ファイルの接尾辞に基づいて、サイズとスケールのプロパティを適切な値に自動的に設定します。標準解像度の画像の場合、scaleプロパティを1.0に設定し、画像のサイズを画像のピクセルサイズに設定します。ファイル名に@2xサフィックスが付いている画像の場合、scaleプロパティを2.0に設定し、幅と高さの値を半分にして、倍率を補正します。これらの半分の値は、画像をレンダリングするために論理座標空間で使用する必要のあるポイントベースの寸法と正しく相関しています。」

どのドキュメントがの動作を説明しているのかわかりませんpathForResource

于 2012-12-21T14:56:44.380 に答える