6

UITableView当它到达底部而不是顶部时,我将如何允许它反弹。本质上,我正在添加一个UIImageView作为我的TableView's部分标题,但目前如果我在顶部拉起,我UIImageView和我的UINavigationBar.

我看着这个问题,但我并不真正理解解决方案。有人介意详细说明吗?

4

2 回答 2

11

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

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    scrollView.bounces = (scrollView.contentOffset.y > 10);
}
于 2013-08-01T21:05:56.753 回答
4

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

iOS:默认坐标系的原点在绘图区域的左上角,正值从它向下和向右延伸。 在 iOS 中你不能改变视图坐标系的默认方向——也就是说,你不能“翻转”它。

最初,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;
    }
}
于 2015-03-19T22:04:57.767 回答