tableView 自动滚动到底部
Posted jackie-subdai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tableView 自动滚动到底部相关的知识,希望对你有一定的参考价值。
- (void)addData:(id)object{
NSInteger count = self.dataArray.count;
_index ++;
NSString * str = [NSString stringWithFormat:@"当前第%zd行",_index];
[self.dataArray addObject:str];
if (count * 44.0f > self.tableView.height) {
NSMutableArray *insert = [[NSMutableArray alloc] init];
for (NSInteger index = count; index < count+1; index++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0];
[insert addObject:indexPath];
}
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:insert withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
[self.tableView layoutIfNeeded];
[self changeInsets:object];
[self scrollToBottom];
} else {
[self.tableView reloadData];
}
}
- (void)changeInsets:(id)object
{
CGFloat height = 0;
height += 44.0f;
// for (NTESMessageModel *model in newModels) {
// height += 44.0f;
// }
UIEdgeInsets insets = self.tableView.contentInset;
CGFloat contentHeight = self.tableView.contentSize.height - insets.top;
contentHeight += height;
CGFloat top = contentHeight > self.tableView.height? 0 : self.tableView.height - contentHeight;
insets.top = top;
// MyLog(@"tableViewHeight == %f",self.tableView.height);
// MyLog(@"top == %f",top);
self.tableView.contentInset = insets;
}
- (void)scrollToBottom
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
CGFloat offset = self.tableView.contentSize.height - self.tableView.height;
[self.tableView scrollRectToVisible:CGRectMake(0, offset, self.tableView.width, self.tableView.height) animated:YES];
});
}
以上是关于tableView 自动滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章
[Unity学习]使用ScrollRect实现自动滚动到底部显示实时消息,并在拖动的时候取消自动滚动,再次手动滑到底部,又继续自动滚动
[Unity学习]使用ScrollRect实现自动滚动到底部显示实时消息,并在拖动的时候取消自动滚动,再次手动滑到底部,又继续自动滚动