首页 > 解决方案 > 当用户在 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)
        }
    }
}

标签: swiftloading

解决方案


在后台线程上保存图像并在主线程上进行 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)
        })
    });

推荐阅读