我的应用类似于示例应用PhotoScroller,例如在scrollview中有很多大图像(2048x1536)。我不使用tile方法,因为我不喜欢那种部分负载效应。我想立刻展示整个图像。我在后台线程中加载图像。当我第一次尝试在UIImageView中使用加载的图像时,它会阻塞主线程半秒,即使它已经在内存中。
我使用探查器来查看这种滞后的来源,但我找不到任何有用的信息。
iOS是第一次使用时复制图像数据还是类似的东西?我可以在后台线程中以某种方式做到这一点吗?
编辑:当我再次滚动并再次回到第二次使用相同的UIImage时,没有延迟
答案 0 :(得分:0)
尝试在后台线程中制作图像。 你是从inet还是本地加载图像?捆绑或自定义路径?
答案 1 :(得分:0)
我想我解决了。当ios从光盘或网络加载UIImage时,它不会以正确的格式加载它。因此,当您想要显示它时,ios必须将此图像重新格式化为他可以使用的格式。当图像足够大时,这种重新格式化会导致明显的口吃。
为了防止这种情况,您需要在加载后重新格式化UIImage,并且可以在后台安全地执行此操作(据我所知)。 This link显示了如何做到这一点。