我有一个api,可以在其中获得请求链接。为了获取图片,我需要发出一个请求以响应接收图像数据。如何获得异步图像?我在youtube中找到了很多库和视频,这些都通过图像链接构成。但是我该怎么办呢?
let token_type = KeychainWrapper.standard.string(forKey: "token_type")
let access_token = KeychainWrapper.standard.string(forKey: "access_token")
let headers:HTTPHeaders? = ["Authorization": "\(token_type ?? "") \(access_token ?? "")"]
Alamofire.request(cellInfo.imageLink ?? "", method: .get, headers: headers).responseImage { response in
if let image = response.result.value {
cell.firstTypeImageView.image = image
}
}
答案 0 :(得分:0)
您的示例的问题在于,如果在检索图像之前单元已被重用,您将使用该图像更新错误的行。如果要更新图像视图,最好使用docker ps
extension。当您执行此操作时,您会从表视图单元格中受益,因为它会自动取消对此单元格的先前请求。这意味着:
它消除了在为表中的行检索图像时快速滚动使重复使用的单元格中的图像视图闪烁的问题。
这也意味着您不必担心当前单元格积压在对不再可见的单元格的请求后面。
因此,您可能会执行以下操作:
UIImageView
或者您可能有一个占位符图像,例如if let imageLink = cellInfo.imageLink, let url = URL(string: imageLink) {
var request = URLRequest(url: url)
let authValue = "\(token_type ?? "") \(access_token ?? "")"
request.setValue(authValue, forHTTPHeaderField: "Authorization")
cell.firstTypeImageView.af_setImage(withURLRequest: request)
}
,然后您将执行以下操作:
blank.png
请注意,如果您的图片比展示图片时的图片视图大得多,则由于操作系统难以处理如此大的资产,您会在表格视图中看到一些卡顿现象。在这种情况下,您可以添加调整大小的过滤器:
cell.firstTypeImageView.af_setImage(withURLRequest: request, placeholderImage: UIImage(named: "blank"))