我有一千张小图片。我需要同时将它们一个一个地组合成一个大图像,并在屏幕上生活。无论我们如何加载/组合小图像,用户都应该能够快速流畅地观看显示的小图像。
意思是:
大图像 += 小图像 1;
大图像 += 小图像2;
大图像 += 小图像3;
...
大图像 += 小图像 1000+;
第一次,我只是用 addSubviews/addSublayers 将小图像添加到大图像中。可以想象,这会导致巨大的延迟,因为要渲染的视图太多,成本很高。
所以我尝试只使用一个imageView(大图像),每次将小图像组合成大图像。所以我写了一些代码,比如:
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();
但是仍然存在巨大的滞后问题(但方式不同),我猜是因为它每次都渲染大图像,成本很高。
所以问题是:
有没有可能我可以保持在上下文中渲染的大图像,而不是每次都渲染它?
或者你有更好的主意可以做我需要的。只要和我谈谈,任何想法都会有所帮助。
感谢你们。