UITableView的contentInset问题

9

我在使用contentInset时遇到了奇怪的问题。我正在实现UITableView上的“下拉刷新”,一切都很顺利,但在某些情况下,我希望在没有用户交互的情况下显示“加载”状态。因此,我想以以下方式简单地使用contentInset

scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);

当视图中显示的单元格为1或2个时,一切都正常。但是,一旦单元格数量增加,我的顶部横幅就不会显示,同时手动滚动正常。我是否需要将滚动移动到内容旁边?

2个回答

32

好的,我通过尝试不同的值找到了答案。原来在上面描述的情况下,除了设置contentInset之外,还必须设置contentOffset。在我的情况下,以下代码有效:

scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);    
scrollView.contentOffset = CGPointMake(0.0f, -60.0f);

谢谢,这个解决方案似乎有效。如果它提供了可行的解决方案,请随意接受您自己的答案。 - Lope
1
对于未来的读者来说,有一个有趣的注释。UICollectionView会自动处理这个问题,而UITableView则不会。如果你在两者之间切换并期望相同的API,可能会非常令人困惑。 - Ryan Poolos

2

这样可以获得更好的结果:

CGFloat offset = scrollView.contentOffset.y;
scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);
scrollView.contentOffset = CGPointMake(0, offset);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接