如何在swift 3中滚动时快速加载图像?

时间:2017-08-10 06:21:11

标签: ios uitableview swift3 uiimageview

我已经从url实现了一组图像并将其显示在集合视图和表视图中,并在加载app后部署在iphone 5设备中,图像页面没有快速滚动并且花费更多时间延迟如何避免这种情况可以帮助任何人我 ?

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return imageArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "productsCell", for: indexPath) as! productsCell
    let arr = imageArray[indexPath.row]
    let urls = NSURL(string: arr)
    let data = NSData (contentsOf: urls! as URL) //make sure your image in this url does exist, otherwise unwrap in a if let check
    cell.productImage.image = UIImage(data: data! as Data)
    cell.productName.lineBreakMode = NSLineBreakMode.byWordWrapping
    cell.productName.numberOfLines = 2
    cell.productName.text = self.productName[indexPath.row]
    cell.productPrice.text = self.productprice[indexPath.row]
    cell.buynowButton .addTarget(self, action: #selector(buyNowButton(_:)), for:UIControlEvents.touchUpInside)
    cell.cartButton .addTarget(self, action: #selector(cartButton(_:)), for:UIControlEvents.touchUpInside)
    return cell
}

2 个答案:

答案 0 :(得分:0)

您可以使用HanekeSwift。它会自动管理缓存,因此您的视图在加载大量图像时不会阻止。 https://github.com/Haneke/HanekeSwift

希望这有帮助!

答案 1 :(得分:0)

我建议使用https://github.com/onevcat/Kingfisher Kingfisher是一个轻量级的纯Swift库,用于从网上下载和缓存图像。它提供了一个内置活动指示器,可以在图像视图中显示。 Kingfisher确保来自完全相同URL的图像只下载一次,它还提供了一种取消下载的方法,例如:当应该显示图像的单元格滚动到可见区域之外时。