OGeek|极客世界-中国程序员成长平台

标题: ios - UITableview 在重新加载时滚动到顶部太高? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 14:54
标题: ios - UITableview 在重新加载时滚动到顶部太高?

我正在使用 scrollRectToVisible:

[self.tblArticle scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];

和/或 setContentOffset:

NSIndexPath* top = [NSIndexPath indexPathForRow:NSNotFound inSection:0];
    [self.tblArticle scrollToRowAtIndexPath:top atScrollPosition:UITableViewScrollPositionTop animated:YES];

和/或这个:

[self.tblArticle setContentOffset: CGPointZero animated: YES];

重新加载后(尝试)滚动到我的 tableView 的顶部。但有时它会太高,以至于我看到 table 上方有太多的空白。我的表格有一个位于单元格行上方的标题。 当我向下滚动一点然后开始重新加载时,它变得太高了。如果我在上面,滚动很好。但是我在重新加载之前得到的越低,标题上方可见的空白就越多。 现在我正在计算我有多低,然后我设置如下:

CGFloat height = 0;
    if(self.selectedCategoryID > 2)
        height = 250;
    [self.tblArticle scrollRectToVisible:CGRectMake(0, height, 1, 1) animated:YES];

这太糟糕了。感谢您的任何建议!

编辑我正在像这样使用 uitableview 重新加载:

// Reload table
[self.tblArticle reloadData];

This is the wanted result

But I get this instead...



Best Answer-推荐答案


试试这个:

[_mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [_mainTableView setContentOffset:CGPointZero animated:YES];
});

关于ios - UITableview 在重新加载时滚动到顶部太高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639645/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4