我使用 GCD 从服务器下载图像并更新 UILabel 上的处理,然后将标签打印到屏幕上(例如:它将打印到屏幕上:“正在下载:3/15 图像”)
但开头的标签是:“正在下载:0/15 图片”。然后当它下载完成时,标签是“正在下载:15/15 图片”。用户看不到下载过程。
我想要的是用户可以看到这样的处理: “正在下载:1/15 图片”,“正在下载:2/15 图片”,“正在下载:3/15 图片”,...,“正在下载:15/15 图片”。
这是我的代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//Here your non-main thread.
NSString *text;
for (int i = 0;i<[self.pageImages count];i++){
NSString *image = [self.pageImages objectAtIndex:i];
[dataManage downloadImagesFromUrl: image ];
text = [NSString stringWithFormat:@“Downloading %d/%d”,i,self.pageImages.count];
}
dispatch_async(dispatch_get_main_queue(), ^{
//Here you returns to main thread.
[downloadLabel setText:text];
});
});
最佳答案
移动
dispatch_async(dispatch_get_main_queue(), ^{
//Here you returns to main thread.
[downloadLabel setText:text];
});
在 for
循环中,以便在每次下载后更新 UI(而不是仅在所有迭代结束时)。
关于ios - 在 IOS 中使用 GCD 下载图像时如何更新标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23221579/