仅为一个方向UITableView启用弹跳

时间:2013-08-01 20:57:32

标签: ios objective-c uitableview

如何让UITableView在到达底部时反弹,而不是在顶部反弹。基本上我正在添加UIImageView作为我的TableView's部分标题,但是目前如果我在顶部拉起来,我的UIImageView和我的UINavigationBar之间会有一个难看的空间。< / p>

我看这个question,但我真的不明白解决方案。有人会介意吗?

2 个答案:

答案 0 :(得分:10)

您链接的问题有两种不同的解决方案。作为表视图的委托,您已经是滚动视图委托,因此您可以实现类似的东西(这是在另一个问题中没有标记为正确的答案......):

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    scrollView.bounces = (scrollView.contentOffset.y > 10);
}

答案 1 :(得分:4)

contentOffset是帧的原点(0,0)与第一个单元格的原点之间的距离。

iOS: The default coordinate system has its origin at the upper left of the drawing area, and positive values extend down and to the right from it. You cannot change the default orientation of a view’s coordinate system in iOS—that is, you cannot “flip” it.

最初,contentOffset为零。如果您滚动到列表顶部(向下拖动手指),则contentOffset将为负数。如果你向下滚动列表(第一个单元格在框架上方),那么contentOffset将是正数。

#pragma mark - UIScrollViewDelegate 
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat maxOffset = (scrollView.contentSize.height - scrollView.frame.size.height);
    CGFloat originOffset = 0;
    // Don't scroll below the last cell.
    if (scrollView.contentOffset.y >= maxOffset) {
        scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, maxOffset);

    // Don't scroll above the first cell.
    } else if (scrollView.contentOffset.y <= originOffset) {
        scrollView.contentOffset = CGPointZero;
    }
}