0

いくつかの単純なコードがリソース フォルダーから画像を読み込まない理由を突き止めるために 1 日を費やしました。キックのために、ファインダーに入り、ファイルの1つをまったく同じ名前に変更してロードしました。次に、他のものを同じ名前に変更しました。調べたところ、ファイル名の前後に変な文字や空白はありませんでした。したがって、これらはすべてシミュレーターの配列に正常にロードされます。しかし、私のデバイスでは、それらは配列にロードされず、「nil」を返し、例外をスローしています。iOS デバイスでは大文字と小文字が区別され、SIM では大文字と小文字が区別されないことはわかっていますが、これを確認したところ、名前はすべて問題ありません。私が考えることができる唯一のことは、私の画像が網膜(@ 2x〜iphone)にちなんで名付けられ、私のデバイスはそうではないということです。しかし、網膜用に同じ名前の画像があり、それらは正常にロードされます。

imageWithContentsOfFile を使用して画像をロードしていますが、画像をロードしようとした後にメモリ警告も表示されます。メモリ警告が関連しているかどうかはわかりません。

4

1 に答える 1

0

問題はファイルの命名にあると思います。Retina グラフィックスと非 Retina グラフィックスの両方をアプリに含める必要があることに注意してください。「~iphone」を追加したのを見て、これはユニバーサルアプリケーションであると想定しているため、画像には次のように名前を付ける必要があります。

  1. myImage~iphone.png
  2. myImage@2x~iphone.png
  3. myImage~ipad.png
  4. myImage@2x~ipad.png

次に、コードでファイル名の「myImage」部分のみを参照して、iOS が残りを整理できるようにします。

例えば:

UIImage *image = [UIImage imageNamed:@"myImage"];
于 2012-09-07T00:16:21.303 に答える