多数の UIImageView で構成されるカスタム ビューがあります。これらの UIImageView のサイズはさまざまです (200x200 から 50x50 まで)。それらが表示する (png ファイルからロードされた) 画像は、可能な限り最高の解像度 (200x200) でリソースに保存されますが、より低い解像度で表示されることがよくあります。
現在、私はフル解像度の画像で UIImageViews をロードするだけなので、次のようになります。
UIImage* anImage = [UIImage imageWithContentsOfFile:imagePathAndName]; // anImage is 200x200
aView = [[UIImageView alloc] initWithImage:anImage];
aView.frame = myFrame; // myFrame is 50x50
最初の質問は、UIImageView で画像を 200x200 から 50x50 に縮小するだけでパフォーマンスが低下すること (メモリまたは CPU 時間) はありますか? この結果として、私のアプリが大量のメモリを使用したり遅くなったりしているようには見えませんが、速度を上げたりメモリ消費を減らしたりできれば、それは素晴らしいことです。
プログラムで画像をスケーリングしてみました。このような:
UIImage* anImage = [UIImage imageWithContentsOfFile:imagePathAndName]; // Image is UIGraphicsBeginImageContext( scaledSize ); // scaledSize is 50x50
CGRect scaledRect = CGRectMake( 0.0, 0.0, scaledSize.width, scaledSize.height );
[anImage drawInRect:scaledRect];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); // Scaled image is now 50x50
UIGraphicsEndImageContext();
aView = [[UIImageView alloc] initWithImage:scaledImage];
aView.frame = myFrame; // myFrame is 50x50
最初にプログラムで画像をスケーリングしても悪影響はないように見えました... iPhone 4にロードするまで。UIImageViewのサイズは、親ビューのサイズに基づいています。 iPhone 3G 画面のサイズ。悲しいことに、iPhone 4 は 3G の 2 倍の解像度を持っているにもかかわらず、iPhone 4 で実行したときのこのビューのサイズは同じです。そのため、ビューのサイズに基づいて画像をスケーリングすることで、iPhone 4 での解像度よりも解像度が低くなり、見栄えが悪くなります。
2 番目の質問は、プログラムで画像を縮小するメリットがあるかどうかです。iPhone 4 の余分なピクセルをどのように活用できますか? 明らかに、ビューのサイズでは行けません。