UIImageWriteToSavedPhotosAlbum 冻结了我的视图

UIImageWriteToSavedPhotosAlbum freezes my view

我在使用UIImageWriteToSavedPhotosAlbum时遇到了问题,因为我想知道它是从什么时候开始下载的,因为我必须下载一个 1.4M 大小的图像,而且下载它需要很长时间,并且我想放置一个加载器,指示用户实际下载图像。有什么想法吗?

我必须从 URL、

下载我的图片
LoadingOverlay.shared.showOverlay(view: self.view) //NEVER EXECUTED, FREEZES BUTTON

let imagestring = Constants.baseURL + "photos/download/" + imagePhoto

if let url = URL(string: imagestring),
    let data = try? Data(contentsOf: url),
    let image = UIImage(data: data) {
    UIImageWriteToSavedPhotosAlbum(image, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}

@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
    LoadingOverlay.shared.hideOverlayView(view: self.view)
    if let error = error {
        // we got back an error!
        let ac = UIAlertController(title: NSLocalizedString("Error", comment: ""), message: error.localizedDescription, preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    } else {
        let ac = UIAlertController(title: "Imagen guardada", message: "Tu imágen se guardó correctamente", preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    }
}

我想知道如何知道从哪里开始下载或者是否有其他方法可以将照片保存到图库。

问题不是你没有正确保存到相册。问题是您下载不正确。永远不要调用 Data(contentsOf: url) 作为下载方式。使用 URL 会话。现在就可以正确下载了,在后台可以收到进度通知,下载完成后会回调,可以继续保存到相册了。