TableView和性能优化

2018-11-25  本文已影响0人  weyan
image.png

一:UITableView

1、UITableViewController继承于UIViewController,内部的tableView就是控制器的self.view

2、UITableView的性能优化:

1)、每当一个cell进入视野范围内就会调用一次-cellForRowAtIndexPath:这个方法,在这个方法里就会创建一个新的cell,这样在滚动tableView时就会不断的创建新的cell增加内存开销,要进一步优化。
优化思路:
搞一个缓存池,把tableview可视范围内已经创建的cell放在缓存池,当再次滚动tableView时在可视范围内重新出现的cell,先去缓存池中找看有没有可用的cell,如果没有的话再创建cell。离开屏幕的cell如果不放在缓存池会被销毁。

性能优化
注意: static NSString *identifier = @"cell";静态局部变量在只占一份内存,但不会改变作用域。
利用注册方法创建cell
注册方法特点:只能注册一次,并且在缓存池循环利用之前,也不能确定cell样式。
例如:想显示cell.detailLabel都显示不了。
image.png

3、UITableView的索引条

当滚动的时候上面的

索引条
image.png
image.png

4、字典转模型框架

字典转模型框架

5、用代码创建cell或通过xib方法自定义cell

该方法根据先从缓存池取相应的cell,取不到的话通过判断不存在就创建cell

通过xib方法自定义cell
image.png
image.png
注意:如果bundle为nil 就默认为mainBundle,cell的高度是由tableview的rowHeight属性或代理方法决定的,在xib中设置cell的高度是无效的,默认44

6、通过storyboard直接在控制器中自定义cell

在拖动tableViewCell时候tableView的rowHeight会跟随改变,所以我们不要在用代码设置tableView的rowHeight或通过代理方法设置.


image.png
image.png

7、自定义分割线

自定义分割线

8、自定义不等高cell

image.png image.png image.png image.png 优化.png 优化.png 优化.png 优化.png

注意:
如果tableviewcell是从storyboard或xib加载的,不会调用 initWithStyle: reuseIdentifier:方法,会调用 awakeFromNib方法进行初始化。

9、 tableView的全局和局部刷新

1.局部刷新 2.增加cell的刷新 3.删除cell的刷新

刷新会重新调用数据源方法。

10、左滑删除功能

image.png 批量删除1 批量删除2 自定义批量删除cell 自定义批量删除cell
上一篇 下一篇

猜你喜欢

热点阅读