我通过使用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 6 0标题与表内容之间有空格:

发布于 2014-12-10 20:03:14
您需要重新设置tableHeaderView:
table.tableHeaderView = table.tableHeaderView;发布于 2012-12-07 16:41:53
看起来标题视图的大小固定为初始值。在iOS 6上,来自表视图的内部计算可能已经更改-因此,如果不重新装入表,则无法更改视图的高度。
如果在scrollViewDidScroll函数的末尾重新装入该表,则可以正常工作(但这将是一个性能问题)。
在不重新加载表格的情况下操纵单元格的高度也有相同的效果。
https://stackoverflow.com/questions/13721503
复制相似问题