我有一个试图加载图像的UIImageView,如果它不存在,我打电话下载图像。下载图像后,将发送NSNotification,并将UIImageView.image设置为下载的图像。这是有效的,但是在设置图像后需要几秒钟才能在UIImageView中显示它。再次通知是在图像下载后发送的,因此延迟不是图像的下载。
以下是通知:
- (void)recieveImageDownloadUpdate:(NSNotification *)notification {
if ([[item valueForKey:@"FlipBookPhotoID"] intValue] == imgView1.tag) {
// this loads the image if the tag on the UIImageView matches the notification update
imgView1.image = [Helpers getImageDownloadIfMissing:[[item valueForKey:@"PhotoName"] stringByReplacingOccurrencesOfString:@"_lg" withString:@""] withManufacturer:[item valueForKey:@"ManufacturerID"] withFlipBookID:[item valueForKey:@"FlipBookID"] withFlipBookPhotoID:[item valueForKey:@"FlipBookPhotoID"] shouldDownload:NO ];
}
}
所有这些都在启用了分页的UIScrollView中使用,如何在通知后立即显示这些图像。
答案 0 :(得分:5)
也许你没有在主线程中设置它。所有UI工作都需要在那里完成。
- (void)recieveImageDownloadUpdate:(NSNotification *)notification {
if ([[item valueForKey:@"FlipBookPhotoID"] intValue] == imgView1.tag) {
dispatch_async(dispatch_get_main_queue(), ^{
imgView1.image = [....]
});
}
}