美文网首页
UITableView的小优化

UITableView的小优化

作者: jay_丶 | 来源:发表于2018-03-19 11:19 被阅读0次

    1. Cell 的高度计算

            在项目中,我们经常都会遇到有tableViewCell 中每行的高度会根据model中的实际内容变化,我之前的做法是在tableView:cellForRowAtIndexPath中设置,在cell的个数不多的情况下,这种做法影响不是很大。但是当cell的个数很多,几百个甚至上千个,每次滚动cell的时候都会计算一次,可想而知了。。。

            解决方案:我也是参考别人的做法的,1.在数据量不是很多的情况下, 在创建数据Model的时候提前计算每个Cell的高度,然后在使用到的时候直接使用计算好的高度   2.在调用tableView:cellForRowAtIndexPath 该model首次调用的时候计算并保存到相应的model,之后可以直接使用计算好的高度了,每个cell都会在首次使用cell的高度的时候进行计算的时候进行计算并保存进model中以下次直接使用

    - (CGFloat)cellHeight {

            if (_cellHeight == 0) {

                NSString *str = [NSString stringWithFormat:@"%@\n%@\nbutton",self.typeName,self.simpleContent];                                    

                _cellHeight = [str boundingRectWithSize:CGSizeMake(DEVICE_WIDTH - 20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:17]} context:nil].size.height + 40;

            }

        return _cellHeight;

    }

    2.缓存View

            在项目中,大多情况上使用tableview,我们都会使用cell的复用机制,在某些情况下,部分View是非常独立的,整个tableview中只会使用到少数几次,甚至只使用一次,而且“体积”非常小,在这种情况下,我们完全可以将这些view缓存在模型中

    本文参考自博客: http://blog.csdn.net/u011452278/article/details/60961350

    相关文章

      网友评论

          本文标题:UITableView的小优化

          本文链接:https://www.haomeiwen.com/subject/yjvuqftx.html