環境:
「フォトモザイク」アプリを作成していて、1024(32 * 32)個の小さな画像(網膜サイズ-> w:30px h:20px)を同時に画面に表示しようとしています。つまり、全体として、フルスクリーンの画像サイズと同じサイズになります。
問題:
1024個のUIImageをロードし、1024個のUIImageViewを作成して、それらすべてをUIViewに追加します。このビューまでスクロールすると、大きな遅れがあります。iPhone4(iOS 5)とiPhone5(iOS 6)でテストします。iPhone4に表示されるだけで、iPhone5でも問題ありません。(iPhone5のCPUがはるかに優れていると仮定すると、それは合理的だと思います)。
私の考え:
すべての画像がメモリ内のローカルディレクトリからすでにロードされていると仮定すると(メソッド "imageNamed"を使用)、問題は画像の表示/レンダリングのステップのどこかにあるはずだと思います。
それで、それについて何か考えはありますか?いずれにせよ、どんなアイデアも役に立ちます。
本当にありがとう、
アップデート
@Antwan van Houdtからアドバイスを受けた後は、はるかに良いです。原則コードは次のとおりです。
-(void)updateCoverImageView:(UIImageView *)smallImage{
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0f);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[self.coverImageView.layer renderInContext:ctx];
[smallImage.image drawInRect:smallImage.frame];
self.coverImageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
次に、smallImageのアルファ値をゼロに設定するだけなので、システムはそれらをレンダリングしません。そして、表紙の画像がそれに置き換わります。これは、大量のUIViewを同時に表示することによって発生するラグの問題に対して機能します。