如何讓 UITableView 的 headerView跟隨 cell一起滾動
UITableView 的 headerView一般是隨着tableView的滾動懸浮在cell上的,但是有時候我們並不希望它是懸浮的狀態,那麼就要讓headerView能夠跟隨cell一起滾動。之前只有自己用用,並沒有做過總結,昨天有朋友問該怎麼解決我就搜索了一下這個問題,發現解決方案並不止一種,對於section只有一個的情況,我個人一直用的是方案3,也比較推薦這個方法,很簡單。在我的代碼中,我初始化了一個自定義的headerImageView,通過代碼
myTable.tableHeaderView =headerImageView;
將我的headerImageView給了tableview的headerView,這樣就成功達到了想要的效果。
在這裏進行總結備忘,方便以後查閱,也希望對用到此文的人有所幫助。
解決方案1:(適用於多個section的情況)
//去掉UITableView headerView黏性 要將tableview的style設置爲UITableViewStyleGrouped
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == self.myTableView)
{
CGFloat sectionHeaderHeight = YOUR_HEIGHT;
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
}
[原帖地址:http://www.cocoachina.com/bbs/read.php?tid-86162-page-1.html]
解決方案2:
設置 tableView的 style爲 UITableViewStyleGrouped,然後
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
這樣確實可以讓 headerView ,在滾動tableView的時候,跟隨着cell的內容一起滾動。但是,下面的cell都被加上了邊框 而且cell的水平顯示範圍變窄了。
解決方案3(!!!!推薦):
將UIView設置爲 整個tableView的headerView,而不是 section 0的headerView
self.tableView.tableHeaderView=header;
這樣,就可以完美的滿足 headerView跟隨cell的內容一起滾動的要求。
[原帖地址:http://blog.csdn.net/tangaowen/article/details/6452314]
解決footerView黏性的問題待整理