我正在为iPad编写一个能够在UIScrollView中显示图像(最大1024x1322)的阅读器
每个图像在需要时(滚动期间)加载到后台线程中(最多加载3个图像)。
我的问题是:加载数据时我正在更新UIImageView,在我的后台线程中:
image= [[UIImage alloc] initWithContentsOfFile: file];
[content setImage:image]
似乎“锁定”主线程并使UISCrollView动画完全不流畅。
提前感谢您提供任何线索
答案 0 :(得分:2)
您应该从不从后台线程设置图像视图的图像(或任何UI组件的任何属性)。 UIKit
不是线程安全的。您需要使用GCD或performSelectorOnMainThread:withObject:waitUntilDone:
将图像传递给主线程。
答案 1 :(得分:0)
在后台线程中执行类似的操作,而不是使用UIImage
CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename("file.png");
CGImageRef image = CGImageCreateWithPNGDataProvider(dataProvider, NULL, NO, kCGRenderingIntentDefault);
将图像ref传回主线程,然后用[UIImage imageWithCGImage:image]
创建UIImage希望这有帮助