我的应用程序有很多用于UI的图形。 加载这么多png文件时总是有1-2秒滞后(使用[UIImage imageWithContentsOfFile:])。
所以我试图将它们打包成一个2048 * 2048的大图像作为纹理altas,就像我在OpenGL中渲染纹理时所做的那样,以防止文件I / O的开销。 然后使用CGImageCreateWithImageInRect()逐个制作子图像。
在绘制图像之前,整个过程很快。 从加载,制作子图像,到将UIImageView添加到我的主视图。
但是在添加了这些imageview之后,需要等待很长时间才能启动UI动画。 我使用了仪器时间分析器,发现“png_do_read_transformations”应该是原因。
在我阅读文档时,CGImageCreateWithImageInRect()创建的图像仅引用原始图像的数据。 当我第一次绘制图像时,这是否会导致性能不佳,因为需要进行转换?
任何方法都可以解决这个问题吗?
P.S。延迟仅在我第一次添加图像时出现。第一次露面后没有延迟。