問題描述:
兩種辦法留特。
方法一:判斷offset設置tableView的背景顏色
*(適用只有一個section的情況|適用頂部為純顏色的情況)
來源:Ios 處理tableview下拉時伴逸,頂部出現(xiàn)白色區(qū)域
核心代碼如下:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
????// float offset = scrollView.contentOffset.y;
????if (scrollView.contentOffset.y<0) {
????????self.tableView.backgroundColor = [UIColor darkBlueColor];//和頂部區(qū)域同色
????} else {
????????self.tableView.backgroundColor = [UIColor whiteColor];//還原tableView背景色
????}
}
補充:需要給tableView設置一個tableFooterView贰逾,高度為最后一個cell的底邊到tableView底部的差值棚品。
如果是多個section赔硫,這種方法就無法使用了:
方法二:在頂部添加一個View倒谷,View要和頂部顏色相同玫氢,設置如下約束:
*(適用頂部為純顏色的情況)
①View的頂部和【tableView頂部對齊的控件】對齊(解釋:比如tableView的頂部和navigationBar底部對齊,那View也和navigationBar底部對齊讲仰;如果tableView的頂部和控制器的self.view的頂部對齊慕趴,那View也和控制器的self.view的頂部對齊)
②View的底部和tableView頂部對齊。
(注:如果使用的是frame而不是約束鄙陡,則在scrollViewDidScroll:方法里根據(jù)滑動offset更改這個View的高度)
方法三:在- (void)scrollViewDidScroll:方法里修改頂部的View的高度
*(適用頂部為純顏色的情況|適用頂部為圖片的情況)
補充:①不需要新自定義View冕房,就是原有的頂部的那個View
②不能是tableHeaderView或者是collectionHeaderView(因為不好動態(tài)改高度),如果已經(jīng)寫成了以上兩種趁矾,需要改寫成自定義View耙册,然后使用addSubView添加到tableView/collectionView上,再給tableView/collectionView設置contentOffset即可實現(xiàn)headerView的效果毫捣。
③圖片填充方式(imageView.contentMode)要設置為UIViewContentModeScaleAspectFill或UIViewContentModeScaleAspectFit
④改變高度代碼如下(代碼中bannerView為頂部的圖片详拙,bannerHeight就是頂部View的高度,這兩個是需要根據(jù)需求自行修改的變量)
- (void)scrollViewDidScroll:(UIScrollView*)scrollView {
?if(-scrollView.contentOffset.y>=bannerHeight) {
????????//這里要同時修改y
?bannerView.frame=CGRectMake(0, scrollView.contentOffset.y, ScreenWidth, -scrollView.contentOffset.y);
? ? }
}
(banner圖源banner的搜索結果_百度圖片搜索?)