普通方法加载img

let url = URL(string: data.img)
        do {
            let data = try Data(contentsOf: url!)
            let image = UIImage(data: data)
            self.img.image = image
        }catch let error as NSError {
            print(error)
        }

使用

if let url = URL(string: data.img) {
            self.img.kf.setImage(with: url)
        }

= =看了网上一些关于tableview优化方案,我这举例用的小democellforrowheightforrow都挺简单没啥优化的,如果这两个方法的计算很多的话会影响tableview滑动,因为tablevew划出去的cell会被保存cell当中复用,当下一个cell划出来的时候cell池中去取,所以每次划出都会加载两个方法,使用频率非常的高,所以尽量少写一点。

引用一下别人文章的方法:

在初学的时候我们经常会在这个 -tableView:cellForRowAtIndexPath: 数据源方法中绑定模型数据,这个方法调用次数非常频繁,我们需要尽可能快的返回 UITableViewCell 实例。所以,我们尽量不在这个方法中绑定 cell 的模型数据,而在 -tableView:willDisplayCell:forRowAtIndexPath 代理方法中来绑定数据,这个方法会在 cell 显示之前调用

1.优化cellForRowAtIndexPath

错误示范:将cell的数据更新放进去,每次都要执行这个操作,麻烦。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableview.dequeueReusableCell(withIdentifier: NewsTableViewCellID) as! NewsTableViewCell
        cell.updateUI(data:HomeDatas[indexPath.row])
        return cell
    }

解决:将update放到willDisplay cell方法中(注意:在执行这个方法的时候cell已经被创建了,不可以随意更改,只能够更改cell当中的一些label,img等等信息而已)

    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let minecell = cell as! NewsTableViewCell
        minecell.updateUI(data: HomeDatas[indexPath.row])

    }

2.优化heightforrow

错误

对于定高:

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 100
    }

完全没必要用这个方法,直接在tableview里面设置rowheight就好了

tableview.rowHeight = 100

变高:T.T研究一下下次再写

3.就是将图片异步缓存起来,不用每次划每次重新加载,kingfisher这个库就是实现了这个功能,适用于swift

使用直接设置的方法,Kingfisher首先会尝试缓存中去取,如果没有,则直接下载图片并且缓存下来以备后用。此外,Kingfisher默认使用absoluteString of url(即绝对url)作为cacheKey以方便再次加载该图片时候缓存中根据cacheKey(也就是图片url查找,通俗来说就是把图片的整个链接作为cacheKey缓存本地

原文地址:https://blog.csdn.net/qq_55655826/article/details/123569742

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25324.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注