UITableView滚动到最后一行跳动问题

1.滚动到最后一行

- (void)scrollToBottom

{

    if ([UIDevice isIphone6] || [UIDevice isIphone6p]) {

        if (self.fpmModel.responseData.count > 0) {

            [self.messageTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.fpmModel.responseData.count - 1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];

        }

    }else{

        if (self.messageTableView.contentSize.height > self.messageTableView.bounds.size.height) {

            [self.messageTableView setContentOffset:CGPointMake(0, self.messageTableView.contentSize.height -self.messageTableView.bounds.size.height) animated:NO];

        }

    }

}

iPhone5及其以下

2.解决跳屏问题(明显的刷新)

对于iPhone5以下设备,由于CPU处理速度较慢,感觉不到跳屏问题,但在iPhone6以上设备,CPU处理速度很快,为了避免明显的跳屏,要延迟100毫秒等待数据刷新完毕再滚动。

注意:该地方的延迟处理是延迟滚动,当数据源很多的时候,滚动瞬间就能滚动到最后一行,但要展示最后一行的数据,在Cell比较复杂的时候可能会稍微慢,所以会出现跳屏问题,而在慢设备上滚动的处理较慢,故感觉不到跳屏。

[self.messageTableView reloadData];

            // 延迟100毫秒等待数据刷新完毕

            dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1*NSEC_PER_SEC));

            dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

                [self scrollToBottom];

            });

推荐阅读更多精彩内容

  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 589评论 1 6
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    FF_911阅读 938评论 0 3
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    十年一品温如言1008阅读 922评论 0 3
  • 现在已经是第三次到这山上来了,有我的车与我为伴,倒也不觉得寂寞,何况又有这般好的景色呢。以前虽来过两次,都是...
    孤祭阅读 99评论 0 1
  • 被竖在果园里的稻草人没有家的稻草人也没有脚胸口空空的稻草人张开胳膊去拥抱的稻草人而整个世界与你为敌 夜晚暴风雨来临...
    葺宝阅读 143评论 1 4