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