我通过使用 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 标头与表格内容隔开: