5

リンゴのドキュメントの状態:

サイズが 1024 x 1024 を超える UIImage オブジェクトを作成することは避けてください。このような画像は大量のメモリを消費するだけでなく、画像を OpenGL ES でテクスチャとして使用するとき、または画像をビューまたはレイヤーに描画するときに問題が発生する可能性があります。このサイズ制限は、コードベースの操作を実行している場合には適用されません。たとえば、ビットマップ ベースのグラフィックス コンテキストに画像を描画して 1024 x 1024 ピクセルを超える画像のサイズを変更する場合などです。実際、ビューの 1 つに画像を描画するには、この方法で画像のサイズを変更する (または複数の小さな画像に分割する) 必要がある場合があります。

これは、正方形ではない画像を扱う場合、それらをより小さな画像に分割する必要があることを意味すると思いますか? これに関する特定のドキュメントや説明はありますか、または経験からのヒントはありますか?

読んでくれてありがとう。

4

1 に答える 1

7

A5 より前の iOS デバイスでは、OpenGL ES テクスチャの最大サイズは 2048x2048 でした (この点に関して、Apple のドキュメントは 1024x1024 であると述べており、これは正しくありません)。つまり、どちらの次元でもそれよりも大きな画像を作成することはできません。新しい iOS デバイス (iPhone 4S、iPad 2、iPad 3) の最大テクスチャ サイズは 4096x4096 です。

正方形の画像を使用する必要があるという意味ではなく、画像の幅または高さが 2048 (新しいデバイスでは 4096) を超えてはならないというだけです。そうしようとすると、画像が黒くレンダリングされると思います。

これは、CATiledLayer によってサポートされていないすべての UIView の制限でしたが、十分な大きさのビューで自動的にタイリングを行うようになりました。2048x2048 より大きい画像を扱う必要がある場合は、CATiledLayer などでホストする必要があります。

ただし、メモリに関する注意事項には注意を払う価値があります。画像は、ソースに関係なく、圧縮されていない形式でメモリに保存されるため、2048x2048 画像あたり 16,777,216 バイト (RGBA の場合は 1 ピクセルあたり 4 バイト) になります。注意しないと、すぐに合計される可能性があります。

于 2012-08-20T17:06:03.267 に答える