如何从 URL 在 TableView 中添加图像
Posted
技术标签:
【中文标题】如何从 URL 在 TableView 中添加图像【英文标题】:How do I add am image in a TableView from URL 【发布时间】:2017-06-08 02:08:55 【问题描述】:我对如何获取作为链接的 DownloadURL 并将其转换为图像并将其添加到我的 tableview 单元格中感到困惑?我的故事板中有一个图像视图,也不知道如何将它连接到表格视图单元格。谢谢!
override func viewDidLoad() super.viewDidLoad()
let ref = FIRDatabase.database().reference().child("Posts")
ref.observeSingleEvent(of: .value, with: snapshot in
print(snapshot.childrenCount)
for rest in snapshot.children.allObjects as! [FIRDataSnapshot]
guard let value = rest.value as? Dictionary<String,Any> else continue
guard let downloadURL = value["DownloadURL"] as? String else continue
let post = postStruct(title: title, date: date, author: author, article: article, downloadURL: downloadURL)
self.posts.append(post)
self.posts = self.posts.reversed(); self.tableView.reloadData()
)
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return posts.count
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
let label1 = cell?.viewWithTag(1) as! UILabel
label1.text = posts[indexPath.row].title
return cell!
【问题讨论】:
为你的 cell 定义一个类,并添加一个 UIImageView 作为 outlet,然后在 cellForRowAtIndexpath 中使用像 Alamofire 或 SDWebImage 这样的图像加载器来加载你的图像 如果我的回答有帮助,请标记它(按寒鸦)让其他人知道它是正确的 【参考方案1】:谷歌这个 cocoapod:SDWebImage
用这个,太棒了
斯威夫特:
import SDWebImage
imageView.sd_setImage(with: URL(string: "url"), placeholderImage: UIImage(named: "placeholder.png"))
关于您的第二个问题连接您的图像视图,您需要创建一个自定义单元格
【讨论】:
再次帮助我***.com/questions/44530922/sdwebimage-doesnt-work【参考方案2】:1) 您需要使用图像创建自定义单元类,如下所示:
class MyCustomCell: UITableViewCell
//...some vars?
@IBOutlet myImageView: UIImageView!
//...some vars?
2) 为您设置table view
。您可以在 google、SO 等中找到很多关于点 1 和 2 的教程。示例:Add custom cells for tableView
3) 安装KingFisher
用于缓存图像。 Kingfisher。它会让你的 tableview 平滑滚动。 (注意:你可以使用任何类似 SDWebImage
的类比)
安装:
1)
pod 'Kingfisher', '~> 3.0'
在你的 pod 文件中2)
pod install
在终端中3)
import Kingfisher
在您的 swift 代码文件中
4) 在您的table view
中使用它:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "myCustomCell", for: indexPath) as! MyCustomCell
let row = indexPath.row
// ...other vars?
let imageURL = URL(string: self.posts[row].downloadURL)
cell.myImageView.kf.setImage(with: imageURL) // Using kingfisher for caching and viewing.
// next time, when you will use image with this URL, it will be taken from cache.
// ...other vars?
return cell
希望对你有帮助
【讨论】:
你能再帮我一次吗? ***.com/questions/44530922/sdwebimage-doesnt-work @Riccardo 你可以向金斯利先生寻求帮助:)【参考方案3】:我认为你从firebase
下载图片的方式不对
-
从
firebase storage
下载图片地址。你需要在 tableCell 中定义一个 imageView
`
let imagesRef = FIRStorage.storage().reference()
let imageRef = self.imagesRef.child("imageName.jpg")
imageRef.downloadURL url, error in
if let error = error
else
DispatchQueue.main.async
cell.imageView.kf.setImage(with: url)
`
-
您的代码有问题,我知道您为什么尝试使用
firebase database
下载图像,因为您不能。
【讨论】:
他正在使用 Firebase 数据库下载图像的 URL。不是图片。以上是关于如何从 URL 在 TableView 中添加图像的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 UIImage 从 tableview 单元格中的 url 平滑滚动