为什么在 Swift 中用户将图像保存到库时不显示加载指示器?
Why don't loading indicator show when user save image to library in Swift?
我想构建让用户可以将图像保存到他们的库中的功能。问题是需要很长时间来处理,所以我想显示加载指示器让用户稍等片刻。但是加载不显示。我该如何解决我的问题?感谢您的帮助。我的代码如下:
@objc func saveImage(sender: UIButton) {
DispatchQueue.main.async {
showLoading(viewCtrl: self)
let imageString = self.arrayPost[sender.tag].image
if let url = URL(string: imageString),
let data = try? Data(contentsOf: url),
let image = UIImage(data: data) {
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
showSuccess(viewCtrl: self)
}
}
}
我想也许 let data = try? Data(contentsOf: url)
阻塞了 UI 线程一段时间。尝试将此任务置于后台。
在后台线程上保存图像并在主线程上执行 UI 处理
showLoading(viewCtrl: self)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
// save image code here
dispatch_async(dispatch_get_main_queue(), { () -> Void in
hideLoading(viewCtrl: self)
showSuccess(viewCtrl: self)
})
});
我想构建让用户可以将图像保存到他们的库中的功能。问题是需要很长时间来处理,所以我想显示加载指示器让用户稍等片刻。但是加载不显示。我该如何解决我的问题?感谢您的帮助。我的代码如下:
@objc func saveImage(sender: UIButton) {
DispatchQueue.main.async {
showLoading(viewCtrl: self)
let imageString = self.arrayPost[sender.tag].image
if let url = URL(string: imageString),
let data = try? Data(contentsOf: url),
let image = UIImage(data: data) {
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
showSuccess(viewCtrl: self)
}
}
}
我想也许 let data = try? Data(contentsOf: url)
阻塞了 UI 线程一段时间。尝试将此任务置于后台。
在后台线程上保存图像并在主线程上执行 UI 处理
showLoading(viewCtrl: self)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
// save image code here
dispatch_async(dispatch_get_main_queue(), { () -> Void in
hideLoading(viewCtrl: self)
showSuccess(viewCtrl: self)
})
});