【问题标题】:UITableView contentSize and originUITableView contentSize 和 origin
【发布时间】:2014-10-19 21:34:39
【问题描述】:

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

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

【问题讨论】:

  • 变量updown 是如何填充的?
  • @Gutblender 在viewDidLoad 它们被分配给int 类型的10。谢谢。

标签: ios uitableview uiscrollview


【解决方案1】:

而不是在你的班级中保留变量 updown,并将 现有 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 2014-02-11
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2015-05-04
    • 1970-01-01
    相关资源
    最近更新 更多