[性能优化]UITableView性能优化的一点感悟及计算UILabel高度的新方法

建了一个面试题解答的项目,大家可以看一看,希望大家帮忙给一个star,谢谢了! 

项目地址:https://github.com/NotFound9/interviewGuide 

 

在使用过程中发现,我们App的首页在快速滑动时会出现掉帧,以及在上拉加载更多时会抖动,因为首页模块是以前的同事写的,很多代码已不适应当前的需求,所以产生了优化的想法,优化主要分为以下几个方面:

1.缓存cell高度(发现了一种计算Label高度的新方法)

2.优化cellForRow方法

3.图片加载优化

4.禁止tableView预估高度

5.删除无用数据处理逻辑

缓存cell高度

在Feed流中,UITableViewCell的高度通常是变化的,需要根据返回的数据中的cell类型以及label的文字长度来计算高度,而在UITableView中func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

是一个高频调用的方法,为了减少CPU的计算,尽可能减少掉帧,所以需要将高度进行缓存,在我们的项目中,首页的数据是这样一个操作流程后台返回的JSON->FeedListModel->FeedsModel->各种cell的ViewModel(例如小图片的cell对应的model-SmallImageCellViewModel,大图片的cell对应的-BigImageCellViewModel)FeedListModel主要是包含了一些页码信息和FeedsModel数组FeedsModel储存着后台返回的cell所需的信息BigImageCellViewModel是cell对FeedsModel进行处理后得到cell所需的信息

优化以前,我们的高度是通过BigImageCellViewModel中计算属性height去获取的

var height: CGFloat {

   guard let title = title else {

       return ((UIScreen.mainWidth - 30) * 9)/16.0 + 62

   }

   let constraintRect = CGSize(width: UIScreen.mainWidth - 30, height: 38.5)

   let attributes = [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值