gpt4 book ai didi

ios - 来自 url 的 UIImage 需要很长时间才能快速加载

转载 作者:搜寻专家 更新时间:2023-11-01 06:06:16 24 4
gpt4 key购买 nike

我有一个包含很多 UITableViewCellUITableView,我使用这段代码将内容和图像加载到 UITableCell 但它需要很长时间为每个 UITableViewCell 显示图像的时间。

var loadOnce : [String] = []

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{

let cell = tableView.dequeueReusableCellWithIdentifier("ProfileActivities", forIndexPath: indexPath) as! ProfileActivitiesTableViewCell


if !loadOnce.contains("\(indexPath.row)") {

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
let LocationImage = self.postmap[indexPath.row]
let LocationImageUrl = NSURL(string: LocationImage)
let LocationImageData = NSData(contentsOfURL: LocationImageUrl!)

let ProfileImage = self.postimg[indexPath.row]
let ProfileImageUrl = NSURL(string: ProfileImage)
let ProfileImageData = NSData(contentsOfURL: ProfileImageUrl!)

dispatch_async(dispatch_get_main_queue(), {
cell.locationImg.image = UIImage(data: LocationImageData!)
cell.activitesProfileImg.image = UIImage(data: ProfileImageData!)
});
});
loadOnce.append("\(indexPath.row)")

}
return cell
}

将代码放在 dispatch_async 中会使滚动变慢,但加载图像仍然需要时间。

考虑到我有很多图片,比如 Facebook 或 Instagram,如何让它更快地加载图片。

谢谢。

最佳答案

由于异步调用和可重用性,将会出现问题。假设您在 IndexPath 1 的图像正在加载图像,但它仍然需要时间来下载,同时用户向下滚动到另一个索引,即 15 并且在内部索引 1 的相同单元格分配给索引 15 并且将显示单元格 1 的图像在 Cell 15 中,如果您没有设法处理以前对同一单元格实例的调用。这就是为什么最好使用像 SDWebImage 这样的缓存库(正如@SeanLintern88 所说)或 AFNetworking's UIImageView Category

AlamoFire's UIImageView (For Swift)

Event 如果你想这样做,那么最好使用子类化,它将帮助你管理调用及其终止。

在您的情况下,加载图像可能是因为您从服务器加载的实际图像的大小。 CDN 类服务提供了一些易于实现的技术来根据请求提供不同大小的图像。因此,即使用户上传了 1200x1200 大小的图像,但在列表屏幕上您可以获取其 120x120 大小的图像,这有助于加快加载速度并节省物理内存。

关于ios - 来自 url 的 UIImage 需要很长时间才能快速加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36570745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com