Xcode 我收集视图 我在 cellForRowAtIndexpath 函数中排队 urlsession 数据任务
Xcode I collection view I queue urlsession datatasks within cellForRowAtIndexpath function
这是获取 indexpath.row、url 单元格的 imageView 并执行 urlSession 的代码。但它一次下载所有内容,这并不好。我只想在完成下载之前开始一个新的 url 会话。我怎样才能做到这一点?
let image = cell.viewWithTag(10) as! UIImageView
let url = URL(string: categories[indexPath.row].imageURL)
URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print(error!)
}
DispatchQueue.main.async {
UIView.transition(with: image, duration: 0.1, options: .transitionCrossDissolve, animations: {
image.image = UIImage(data: data!)
}, completion: nil)
}
}
.resume()
cellForRowAtIndexpath
在单元格即将显示时调用,因此在您当前的代码中它会在单元格每次出现时下载图像,您需要使用 SDWebImage 来利用许多东西,包括自动缓存
此外,最好为单元格内的元素而不是标签创建出口
let image = cell.viewWithTag(10) as! UIImageView
这是获取 indexpath.row、url 单元格的 imageView 并执行 urlSession 的代码。但它一次下载所有内容,这并不好。我只想在完成下载之前开始一个新的 url 会话。我怎样才能做到这一点?
let image = cell.viewWithTag(10) as! UIImageView
let url = URL(string: categories[indexPath.row].imageURL)
URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print(error!)
}
DispatchQueue.main.async {
UIView.transition(with: image, duration: 0.1, options: .transitionCrossDissolve, animations: {
image.image = UIImage(data: data!)
}, completion: nil)
}
}
.resume()
cellForRowAtIndexpath
在单元格即将显示时调用,因此在您当前的代码中它会在单元格每次出现时下载图像,您需要使用 SDWebImage 来利用许多东西,包括自动缓存
此外,最好为单元格内的元素而不是标签创建出口
let image = cell.viewWithTag(10) as! UIImageView