在 Table View UIImage 中使用 SD_setImage 缓存
Posted
技术标签:
【中文标题】在 Table View UIImage 中使用 SD_setImage 缓存【英文标题】:Cache using SD_setImage in Table View UIImage 【发布时间】:2019-08-19 12:52:09 【问题描述】:我想在我的表视图中为 UIImage 使用 sd_setImage。但我不确定如何...
func feedsImage()
Database.database().reference(withPath: "Users/\(self.userID)/Images").observe(.childAdded, with: (snapshot: DataSnapshot) in
if let userDict = snapshot.value as? [String:Any]
let getphotoUrl = userDict["photoUrl"] as! String
let post = Post(getphotoUrl: getphotoUrl)
self.post.append(post)
print(self.post)
self.myTableView.reloadData()
)
这是表格视图
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell let cell = UITableViewCell(style: .default, reuseIdentifier: "myCell")
DispatchQueue.global().async
let postImage = self.post[indexPath.row]
if let photoUrl = URL(string: postImage.photoUrl!)
do
let data = try Data(contentsOf: photoUrl)
DispatchQueue.main.async
cell.imageView?.image = UIImage(data: data)
cell.imageView?.frame = CGRect(x: 0, y: 0, width: 450, height: 450)
// DispatchQueue.main
catch
print("Error in re-sampling UIImage")
// DispatchQueue.global
return cell
//MARK:- cellForRowsAt
【问题讨论】:
【参考方案1】:添加 pod 并安装后,导入
import SDWebImage
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = UITableViewCell(style: .default, reuseIdentifier: "myCell")
cell.imageView.sd_setImage(with: URL(string:post[indexPath.row].getphotoUrl), placeholderImage: UIImage(named: "placeholder.png"))
return cell
顺便说一句,替换这一行总是更好
let cell = UITableViewCell(style: .default, reuseIdentifier: "myCell")
与
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell")!
【讨论】:
以上是关于在 Table View UIImage 中使用 SD_setImage 缓存的主要内容,如果未能解决你的问题,请参考以下文章
将 UIImage 分配给 Collection View Cell