UITableView的小优化

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的小优化)