在iOS 6中更改tableHeaderView的框架时,UITableView不会自动调整大小

时间:2012-12-05 10:50:03

标签: ios

我通过使用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上运行得很好但是我在tableHeaderView和iOS 6+上的表内容之间得到了一些奇怪的空间(图像中的标题是红色的)

iOS 5 - 标题和表格内容之间没有空格: iOS 5 - no space between the header and the table content

iOS 6 0标头与表格内容间隔开: iOS 6 0 header is spaced from the table content

2 个答案:

答案 0 :(得分:1)

您需要再次设置tableHeaderView:

table.tableHeaderView = table.tableHeaderView;

答案 1 :(得分:0)

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

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

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