2010-12-19 23 views
7

デバイスからアプリケーションを実行すると、画像が表示され、すべてがうまくいきます。しかし、デバイスに移動すると、表示されない38枚の写真のうち約10枚で動作します。私は、sqliteデータベースから画像の名前を引っ張っているし、私はすでにチェックして、名前は正しい、大文字とすべてです。私はバンドルをチェックし、イメージはそこに正しくあります。シミュレータに表示される画像はiPhoneデバイスに表示されません

これでメモリが有効になりますか?私は本当にこれが起こる原因となるものが他に何かを確認していないのですか?

ありがとうございます!

解決方法: ファイルが何らかの形で正しく保存されず、Photoshopやペイントでも開くことができませんでした。だから、ファイルを開くことができないと、彼らは表示されませんでした...助けてくれてありがとう!

答えて

6

シミュレータは、より広い範囲のイメージ形式を受け入れます。場合によっては、デバイスが表示できない特定のファイルタイプがありました。 10個のファイルをもう一度調べて、他のファイルとの違いを探します。

2

はい、メモリはこれに絶対に果たします。あなたのUIImageの作成呼び出しを確認し、空ではないことを確認してください。また、コンソールウィンドウにメモリ警告が表示されているかどうかを確認してください。

43

最初に確認するのは、リソースを参照するために使用している文字列の場合です。 iPhoneは大文字と小文字を区別しますが、シミュレータはそうではありません。

大文字小文字が区別されています。あなたのUIImage作成呼び出しをすべてログしてください!

+1

洞察力のある12. – ratsimihah

+2

これは私を助けました。シミュレータ自体は、UIImageのimageNamed部分では大文字と小文字を区別しないようですが、デバイスは厳密です。 – Joseph

+0

これも私を助けました。 – Bobby

1

一般に、メモリー内のサイズが原因であった場合、アプリケーションはデバイス上のメモリー不足でクラッシュします。しかし、画像は表示されないようです。

もう1つ間違っていることは、画像のサイズです。 iPhone上のUIViewのサイズは、GPUがサポートする最大テクスチャサイズよりも小さい場合があります。 Appleはこれが1024 x 1024であると述べていますが、元のモデルのiPhoneでも2048 x 2048のように見えます。このサイズを超える画像のビューを1つの次元で作成しているかもしれませんが、MacのGPUでの最大テクスチャサイズが大きいため、シミュレータで正常に表示されます。

+0

画像サイズに関するコメントだけですが、新しいサイズのiPhone 4が原因です。画像を解像度の2倍にすることができました。画像と元の名前の元のサイズの画像、画像名+ "@ x2"またはサイズ/解像度の2倍の "@ 2"の画像を持つことは簡単だと思います。 – Matt

+0

@マット - いいえ、最大テクスチャサイズの違いは、iPhone 4に起因するものではなく、使用されるGPUの固有の制限です。私は元のiPhone上でiPhone OS 2.0から2048 x 2048のレイヤーとテクスチャーを使用することができたので、新しいRetinaディスプレイ機能とは無関係です。これは、実際のハードウェアとは異なるAppleのドキュメントのケースに過ぎません。これは、GPUの仕様が将来変更される場合には控えめなものかもしれません。 –

+0

PowerVR SGXの最大解像度は2048です。画像について:画像が大きすぎる場合やメモリが不足している場合に、アプリがクラッシュしないことが判明しました。 iosは、表示されていない他の画像をダンプします。ただし、コンソールにはメモリ警告が表示されます。 – twerdster

関連する問題