3

我通过使用 tableHeaderView 并在滚动时调整框架大小在 UITableView 中实现了视差效果:

headerView is the table.tableHeaderView
topHeight = 400; // the height of the tableHeaderView

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat scrollOffset = scrollView.contentOffset.y;
    if (scrollOffset>=0 && scrollOffset<=topHeight) {
        CGRect frame = CGRectMake(0, scrollOffset/2, 320, topHeight - scrollOffset/2);
        headerView.frame = frame;
    } else if (scrollOffset>topHeight) {
        CGRect frame = CGRectMake(0, 100, 320, 100);
        headerView.frame = frame;
    } else {
        CGRect frame = CGRectMake(0, 0, 320, topHeight);
        headerView.frame = frame;
    }
}

该效果在 iOS 5.0 和 5.1 上完美运行,但我在 iOS 6+ 上的 tableHeaderView 和表格内容之间出现了一些奇怪的空间(图像中的标题为红色)

iOS 5 - 标题和表格内容之间没有空格: iOS 5 - 标题和表格内容之间没有空格

iOS 6 0 标头与表格内容隔开: iOS 6 0 标头与表格内容隔开

4

2 回答 2

1

您需要再次设置tableHeaderView:

table.tableHeaderView = table.tableHeaderView;
于 2014-12-10T12:03:14.313 回答
0

看起来标题视图的大小是用初始值固定的。也许在 iOS 6 上,表格视图的内部计算发生了变化 - 因此,如果不重新加载表格,就无法更改视图的高度。

如果您在 scrollViewDidScroll 函数的末尾重新加载表格,它可以工作(但这将是一个性能问题)。

在不重新加载表格的情况下操纵单元格的高度是相同的效果。

于 2012-12-07T08:41:53.120 回答