iOS:tableView刷新闪烁问题解决
2017-11-18 17:07
1206 查看
我做的是直播消息系统,每当有人评论、送礼物、第一次点赞直播消息列表都要及时显示。就像这样
原来思路是这样的:图中红框是我们的消息列表,是一个tableView,每个消息是一个cell,每次接收到一条消息立刻添加到数据数组中,同时刷新tableView,滚动到底部。
原来的代码是这样写的:
[chatDataArray addObject:chatModel]; [chatTable reloadData]; NSIndexPath *myIndexPath = [NSIndexPath indexPathForRow: chatDataArray.count - 1 inSection:0]; [chatTable selectRowAtIndexPath:myIndexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];但是这样写有一个很大的问题就是:每次接受到消息时添加到数据数组中,同时刷新tableView的时候,整个tableView会闪烁一下,这个问题困扰我好久不知道怎么解决,期间用过很多办法(先隐藏再刷新,异步刷新),踩了很多坑,都解决不了问题,分析闪烁的根源是因为刷新的是整个tableView,想想如果只刷新最后一行就好了,但是局部刷新的方法的前提是这行cell原来是存在的,但是这个直播消息是每次有新消息后有刷新列表,一个新的消息产生后伴随着一个新的一行cell(其实是没产生新的cell,有复用机制,这里打个比方,不要误解)。今天不知道怎么开光了,突然想到tableView还有一个insert的方法,一直不怎么用竟然把她忘了。
解决后的代码如下:
[chatDataArray addObject:chatModel]; NSIndexPath *myIndexPath = [NSIndexPath indexPathForRow: chatDataArray.count - 1 inSection:0]; [chatTable insertRowAtIndexPath:myIndexPath withRowAnimation:UITableViewRowAnimationNone]; [chatTable selectRowAtIndexPath:myIndexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];新的接受的消息cell直接插入到最后一行,然后再自动滚动到底部。不闪了,哈哈,so easy!完美解决!请记住整个伟大的方法
- (void)insertRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
希望这篇文章可以帮到你O(∩_∩)O
作者:IOSMan
链接:http://www.jianshu.com/p/8dd53afa526e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- 解决TableView刷新指定行时闪烁的问题
- iOS tableView上拉刷新显示下载进度的问题及解决办法
- iOS9.0以上tableView reload刷新界面展示问题
- iOS中关于动态Tableview中的cell数据传输的多线程问题解决之拙见
- 郑州iOS點 - 关于tableView 和 collectionView 在ReloadData时候闪烁的问题
- iOS tableview的第二页数据刷新特定某个cell数据的解决办法
- iOS解决tableview上滑headsection停留在顶部的问题
- 解决RecyclerView中使用UIL加载网络图片,在刷新时出现闪烁问题
- iOS开发UITableView篇:[self.tableView reloadData]执行时间过长问题解决历程
- iOS 11 导致tableview 刷新之后漂移问题
- iOS tableview的第二页数据刷新特定某个cell数据的解决办法
- (四十二)tableView的滑动编辑和刷新 -局部刷新和删除刷新 -待解决问题
- iOS tableview的第二页数据刷新特定某个cell数据的解决办法
- iOS tableview的第二页数据刷新特定某个cell数据的解决办法
- IOS 解决tableview分割线右缩进15像素问题
- (四十二)tableView的滑动编辑和刷新 -局部刷新和删除刷新 -待解决问题
- IOS 解决scoryboard上tableview、collection view顶部有空白问题
- iOS Tableview中解决plain样式下,header的浮动问题
- iOS tableView上刷新显示下载进度的问题
- iOS tableView分割线问题解决方法