我们可以将单元格插入UITableView或UICollectionView,如果单元格将插入到中间或底部,我们将感觉平滑并保持当前偏移。但是当我在顶部插入时,tableview或UICollectionView将自动移动到Offset零,意味着我不会停留在我想要的当前可见单元格。我该如何实现它,它是原生功能还是我们必须制作一些复杂的代码? 我看到FB messenger或Skype应用程序,当滚动到顶部时,将插入新消息而不更改当前可见视图。有人建议给我一个解决方案吗?
答案 0 :(得分:0)
如果使用master-Detail应用程序创建一个新的简单项目,您可以看到插入它时不会滚动到顶部内容偏移量只会改变一点(等于新行高度),即使您在中间,顶部或底部插入顶部。 。它使用简单的代码,如
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
现在即使你不想要那么小的滚动this也是不错的解决方案
//just need check if you already on the top of the tableview that may be first few rows depend on your row height
if(self.tableView.contentOffset.y > ONE_OR_X_ROWS_HEIGHT_YOU_DECIDE
{
self.delayOffset = self.tableView.contentOffset;
self.delayOffset = CGPointMake(self.delayOffset.x, self.delayOffset.y+ insertedRowCount * ONE_ROW_HEIGHT);
//insert your row here
[self.tableView setContentOffset:self.delayOffset animated:NO];
}else
{
//insert your row here
}