我通过使用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 6 0标头与表格内容间隔开:
答案 0 :(得分:1)
您需要再次设置tableHeaderView:
table.tableHeaderView = table.tableHeaderView;
答案 1 :(得分:0)
看起来标题视图的大小是用初始值固定的。也许在iOS 6上,表视图中的内部计算已经改变 - 因此如果不重新加载表,则无法更改视图的高度。
如果你在scrollViewDidScroll函数的末尾重新加载表它可以工作(但这将是一个性能问题)。
在不重新加载表格的情况下操纵单元格高度的效果相同。