UITableView contentSize和origin

时间:2014-08-26 14:06:43

标签: ios uitableview uiscrollview

我正在玩UITableView,我创建了2个按钮。

其中一个按钮会使表格视图向上滚动一定量 而另一个会导致表视图向下滚动一个数量。

向上滚动:

[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时禁止向下滚动的尝试。但它似乎没有用。

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

1 个答案:

答案 0 :(得分:1)

而不是在您的班级中保留变量updown,并将现有 contentOffset转移到这些金额(然后您更改,这不会&# 39;对我来说有意义),为什么不把它保持在局部并且恒定地移动:

- (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在&#34;我应该滚动&#34;检查。