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 ヘッダーは、テーブル コンテンツから離れています。