私は何千もの小さな画像を持っています。それらを同時に1ダースずつ大きな画像に組み合わせて画面に表示する必要があります。ユーザーは、小さな画像をどのようにロード/結合するかに関係なく、1つずつ表示される小さな画像をすばやくスムーズに見ることができる必要があります。
つまり:
BigImage + = SmallImage1;
BigImage + = SmallImage2;
BigImage + = SmallImage3;
..。
BigImage + = SmallImage1000 +;
最初は、addSubviews/addSublayersを使用して小さな画像を大きな画像に追加しただけです。ご想像のとおり、ビューが多すぎてレンダリングできないため、大きな遅延が発生しました。
そこで、imageView(大きな画像)を1つだけ使用して、毎回小さな画像を大きな画像に結合しようとしました。だから私は次のようなコードを書きました:
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0f);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[bgImageView.layer renderInContext:ctx];
//[bgImageView.image drawInRect:self.frame]; // This line or the line above, same result
[smallImg drawInRect:rectToWindow];
bgImageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
しかし、それでも大きなラグの問題があります(ただし、方法は異なります)。それは、毎回大きな画像をレンダリングするため、コストがかかるためだと思います。
したがって、問題は次のとおりです。
大きな画像をコンテキスト内でレンダリングし続けることができ、毎回レンダリングしない可能性はありますか?
または、私が必要なことを実行できるより良いアイデアがあるかもしれません。私に話しかけてください、どんなアイデアも役に立ちます。
君たちありがとう。