首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带UITableView单元的Swift 4 AlamofireImage

带UITableView单元的Swift 4 AlamofireImage
EN

Stack Overflow用户
提问于 2018-05-21 09:42:12
回答 8查看 3.2K关注 0票数 10

我正在使用AlamofireImages尝试从服务器下载图像并将其显示在我的表视图单元格中,这就是我得到的结果,但我的图像没有显示,只有textLabel和detailTextLabel

代码语言:javascript
复制
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "trendingCell", for: indexPath)

        print(self.array[indexPath.row])

        cell.textLabel?.text = (self.array[indexPath.row]["title"] as! String)

        cell.detailTextLabel?.text = (self.array[indexPath.row]["username"] as! String)

        Alamofire.request("http://xxxxxxx.com/uploads/" + (self.array[indexPath.row]["cover"] as! String)).responseImage { response in
            if let image = response.result.value {
                cell.imageView?.image = image
            }
        }

        return cell
    }
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2018-05-21 15:14:26

试试这个:

代码语言:javascript
复制
 Alamofire.request(imageUrl!, method: .get).response { response in
                    guard let image = UIImage(data:response.data!) else {
                        // Handle error
                        return
                    }
                    let imageData = UIImageJPEGRepresentation(image,1.0)
                    cell.myImage.image = UIImage(data : imageData!)
                }

这对我来说很好..希望这能对你有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2018-05-28 15:55:00

当然,您的图像不会显示给您。因为当Alamofire开始下载你的图像时,它会在后台线程中进行处理。但你是在主线程或UI线程中工作,所以你需要从后台切换到主线程,这将为你工作。

代码语言:javascript
复制
Alamofire.request("http://xxxxxxx.com/uploads/" + (self.array[indexPath.row]["cover"] as! String)).responseImage { response in
       DispatchQueue.main.async {
            if let image = response.result.value {
                cell.imageView?.image = image
            }
        }
}

如果你认为这对你来说很难做到这一点,我建议你使用这个叫做Kingfisher的库,它将为你处理异步加载图像,使你的单元格的表顺利运行。

链接:https://github.com/onevcat/Kingfisher

票数 4
EN

Stack Overflow用户

发布于 2018-05-22 13:01:59

使用AlamofireImages

代码语言:javascript
复制
if let url = URL(string: "your url") {

    cell.imageView?.af_setImage(withURL:url, placeholderImage: nil, filter: nil,  imageTransition: .crossDissolve(0.2), runImageTransitionIfCached: false, completion: {response in
      // do stuff when is downloaded completely.
    })
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50440980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档