我只是在玩UITableView
我创建了 2 个按钮。
其中一个按钮将使表格 View 向上滚动一定量
而另一个将导致表格 View 向下滚动一个量。
向上滚动:
[self.tableView setContentOffset:CGPointMake(self.tableView.contentOffset.x, self.tableView.contentOffset.y + up) animated:YES];
up += 10;
向下滚动:
[self.tableView setContentOffset:CGPointMake(self.tableView.contentOffset.x, self.tableView.contentOffset.y + down) animated:YES];
down -= 10;
一切都很好,很有趣。但问题是我不知道如何防止滚动在顶部和底部滚动到屏幕外。到目前为止,它会继续向上或向下滚动,甚至显示空白,底部也是如此。
我试过使用
contentSize
属性,但它似乎不起作用。不工作意味着:
if(up < self.tableView.contentSize.height)
{
[self.tableView setContentOffset:CGPointMake(self.tableView.contentOffset.x, self.tableView.contentOffset.y + up) animated:YES];
up += 10;
}
以上是当数量(
up
)大于 contentSize
时禁止向下滚动的尝试。 .但这似乎不起作用。无论如何我可以检测到顶部和底部的滚动都在屏幕外吗?换句话说,我想防止它在第一个单元格上方滚动,在最后一个单元格下方滚动。
最佳答案
而不是保留变量up
和 down
在您的类(class)中,并转移现有的contentOffset
通过这些数量(然后您更改,这对我来说没有意义),为什么不将其全部保留在本地并以恒定数量移动:
- (void)buttonClicked:(id)sender
{
CGPoint offset = self.tableView.contentOffset;
CGSize visibleSize = self.tableView.bounds.size;
if (sender == btnUp)
{
offset = CGPointMake(offset.x, offset.y + 10);
if (offset.y < (self.tableView.contentSize.height - visibleSize.height))
[self.tableView setContentOffset: offset animated:YES];
}
else if (sender == btnDown) { /* you get the idea */ }
}
那部分只是一个想法......我认为真正的解决方案在于包括
tableView.bounds
在“我应该滚动”检查中。
关于ios - UITableView contentSize 和 origin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25507857/