Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image Swift 3图像下载无法完全工作_Image_Swift3_Ios10 - Fatal编程技术网

Image Swift 3图像下载无法完全工作

Image Swift 3图像下载无法完全工作,image,swift3,ios10,Image,Swift3,Ios10,因此,经过5个小时的坚定宣誓,我终于成功地将我的项目从Swift 2.2转换为Swift 3。事情发展起来了,现在一切都变聪明了,只有一个小例外 由于某些原因,我的图像不像以前那样异步下载 我已经录了一段视频给大家看,还有一些代码示例。我正在尝试AlamofireImage和一个普通的ole Swift扩展,它们都给出了相同的行为。正如您在视频中所看到的,当我拉动以刷新视图时,图像一开始根本不会加载(出于某种原因,我注意到默认占位符图像最初不会显示),它们突然出现 如果有人看到过类似的情况,如果

因此,经过5个小时的坚定宣誓,我终于成功地将我的项目从Swift 2.2转换为Swift 3。事情发展起来了,现在一切都变聪明了,只有一个小例外

由于某些原因,我的图像不像以前那样异步下载

我已经录了一段视频给大家看,还有一些代码示例。我正在尝试AlamofireImage和一个普通的ole Swift扩展,它们都给出了相同的行为。正如您在视频中所看到的,当我拉动以刷新视图时,图像一开始根本不会加载(出于某种原因,我注意到默认占位符图像最初不会显示),它们突然出现

如果有人看到过类似的情况,如果可能的话,我将非常感谢您的帮助

视频是

因此,代码示例如下: 扩展函数

 func downloadedFrom(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) {
    contentMode = mode
    URLSession.shared.dataTask(with: url) { (data, response, error) in
        guard
            let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
            let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
            let data = data, error == nil,
            let image = UIImage(data: data)
            else { return }
        DispatchQueue.main.async() { () -> Void in
            self.image = image
        }
        }.resume()
}   

func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) {
    guard let url = URL(string: link) else { return }
    downloadedFrom(url: url, contentMode: mode)
}
还有我对一个细胞使用AlamofireImage只是为了测试

    if nc.returnCommentDetails().image != "" {
        let url = URL(string: nc.returnCommentDetails().image!)
        cell.imgProfile.af_setImage(withURL: url!)
        cell.imgProfile.resizeForProfilePic()
    }

因此,经过一些自我反省,我找到了问题的根源

它基本上有一个问题,就是我为使图像视图循环而编写的一个扩展,它评论说图像看起来很好

我将对此进行研究,如果有人正在使用类似的东西,我将提供一个替代方案:

func resizeForProfilePic(){
    self.layer.borderWidth = 0.1
    self.layer.masksToBounds = false
    self.layer.borderColor = UIColor.black.cgColor
    self.layer.cornerRadius = self.frame.height/2
    self.clipsToBounds = true
}
使用AlamofireImage似乎已经对其进行了排序

let url = URL(string: nc.returnCommentDetails().image!)
let placeholderImage = UIImage(named: "DefaultImage")!
let size = CGSize(width: 100.0, height: 100.0)
let imageFilter = AspectScaledToFillSizeCircleFilter(size: size)
cell.imgProfile.af_setImage(withURL: url!, placeholderImage: placeholderImage, filter: imageFilter)

要解决此问题,只需在layer.cornerRadius之前添加此行

self.view.layoutIfNeeded()

然后第一次加载时所有图像都出现了

我也遇到了同样的问题。当我注释掉带有拐角半径的线条时,图像显示的是一个漂亮的。我现在可能会坚持使用AFImage,因为它实际上有很多很酷的功能。但是找到它真是太好了。我失去了生存的意志:)