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];

            });

你可能感兴趣的:(UITableView滚动到最后一行跳动问题)