ios - UITableView contentSize 和 origin

标签 ios uitableview uiscrollview

我只是在玩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 时禁止向下滚动的尝试。 .但这似乎不起作用。

无论如何我可以检测到顶部和底部的滚动都在屏幕外吗?换句话说,我想防止它在第一个单元格上方滚动,在最后一个单元格下方滚动。

最佳答案

而不是保留变量updown在您的类(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/

相关文章:

iphone - 如何通过单击 UIPageControl 的点来更改页面

iphone - MKMapView错误

ios - 可以只包含 iPad 版本的图像吗?

ios - UITableView - 使用 Hpple 数据设置表格 View

ios - 如何调整 UITableViewController tableView 的大小?

ios - (Objective-C) pageView中的viewController在来回分页时得到 "stuck"

ios - UIButton 的 titleLabel 是可选的原因是什么?

ios - 如何设置最低要求的 iOS 版本?

Swift - UITableView - 快速滚动时加载不正确的图像

ios - uilabel的水平滚动?