iOS开发——UITableView优化之缓存cell高度

iOS开发——UITableView优化之缓存cell高度,第1张

因为当tableView滚动时会不停的回调 - (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath; 这个代理方法,当cell的高度自适应内容时,就意味着每次回调这个方法时都要计算高度,而计算是要花时间了,在用户体验上的体现就是卡顿。为了避免重复且无意义的计算cell高度,缓存高度就显得尤为重要了。

缓存高度需要一个可变数组,每当回调 - (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath; 这个方法时,我们先去这个数组里去取,如果有,就直接拿出来,如果没有,就计算高度,并且放进数组。

总的来说缓存cell高度还是比较简单的,只需在原来的基础上多加一个可变数组即可,逻辑也不复杂。不过,其对性能的优化还是不容小觑的,尤其是cell内容复杂且需高度自适应内容时。强烈建议人人get这项技术,即使是入门级开发者。

后面写了一篇更详细的:

iOS开发 | 简单实在的cell高度自适应内容及提前计算并缓存cell高度

设置表格的高度有两种方法,分别如下:

tablesetTotalWidth(float totalWidth);//设置表格的总宽度

tablesetTotalWidth(float[] columnWidth);//设置表格的各列宽度

使用以上两个函数,必须使用以下函数,将宽度锁定。

tablesetLockedWidth(true);

data = rand(90, 90, 22); for i = 1:22 data(:,:,i) = data(:,:,i) / sum(sum(data(:,:,i)));end%%%%%%%%%%%%%%%%%%%%%%data是909022的三维矩阵,我现在让它是随机矩阵,你所谓的第i个cell,就是data(:,:,i)所以只要一个for循环,把每个cell除以了这个cell的元素之和就行了,

也没有别的办法,必须在每次显示之前,先计算好每一行cell实际需要的高度,然后在heightForCell:AtIndexPath:里返回这个高度。比如一个纯文本的cell,row0的文本高度为40,上下空白为20,那么这行的cell高度应返回60,如果row8的文本高度为120,则返回高度为140。要你自己去算。目前还做不到自适应高度。

- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath { return kCellHeight; } 这个函数返回某一行的高度,如果每一行的高底都不一样的话,你需要一个数据记录每一行的高度,然后根据 indexPath

以上就是关于iOS开发——UITableView优化之缓存cell高度全部的内容,包括:iOS开发——UITableView优化之缓存cell高度、如何设置IText中的Cell的高度、ios中cell中有个textview,怎么在输入时计算cell高度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9315712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存