标签:
取消tableView中header和footer的粘性效果
最近做一个项目的时候,遇到了一个bug问题,或者说个人能力有限,想了很久没有想到最好的方法去现实。
那么是什么问题呢?
首先当我在tabelView中为没饿过section设置一个header和footer之后,滑动tableView的时候,发现header和footer并不随着tableView中的cell一起滚动,而且会在顶部活着底部停留一段时间,这样的效果虽然好,但是上面就是不需要者也的功能,所以只好自己想办法解决。
我记得有时候header是不会停顿的,可是为什么这个时候header和footer都隐藏呢?
后来发现原来设置tableView.tableHeaderView = ?或者footerView的时候就不会停顿,那是当然,因为这个是tableView的一部分,不是section的一部分。
也在网上找了一段这样的代码
1 //去掉UItableview headerview黏性(sticky) 2 3 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { 4 5 if (scrollView == self.tableView) 6 7 { 8 9 CGFloat sectionHeaderHeight = 64; //sectionHeaderHeight 10 11 if (scrollView.contentOffset.y <= sectionHeaderHeight && scrollView.contentOffset.y >= 0) { 12 13 scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); 14 15 } else if (scrollView.contentOffset.y >= sectionHeaderHeight) { 16 17 scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); 18 19 } 20 21 } 22 23 }
但是他职能设置headerView不能设置footerView,自己也试着去补充footerView的实现,但是发现技术有限,所以,你懂的!
最后看到国外一位大神写的一一篇文章找到了下面的代码
1 -(void)scrollViewDidScroll:(UIScrollView *)scrollView { 2 3 if (scrollView == self.tableView) 4 5 { 6 7 UITableView *tableview = (UITableView *)scrollView; 8 9 CGFloat sectionHeaderHeight = 64; 10 11 CGFloat sectionFooterHeight = 120; 12 13 CGFloat offsetY = tableview.contentOffset.y; 14 15 if (offsetY >= 0 && offsetY <= sectionHeaderHeight) 16 17 { 18 19 tableview.contentInset = UIEdgeInsetsMake(-offsetY, 0, -sectionFooterHeight, 0); 20 21 }else if (offsetY >= sectionHeaderHeight && offsetY <= tableview.contentSize.height - tableview.frame.size.height - sectionFooterHeight) 22 23 { 24 25 tableview.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, -sectionFooterHeight, 0); 26 27 }else if (offsetY >= tableview.contentSize.height - tableview.frame.size.height - sectionFooterHeight && offsetY <= tableview.contentSize.height - tableview.frame.size.height) { 28 29 tableview.contentInset = UIEdgeInsetsMake(-offsetY, 0, -(tableview.contentSize.height - tableview.frame.size.height - sectionFooterHeight), 0); 30 31 } 32 33 } 34 35 }
注:sectionHeaderHeight和sectionFooterHeight根据项目进行设置。
发现基本上搞定,最后只需要设置对应的内边距即可!
iOS开发——项目实战总结&取消tableView中header和footer的粘性效果
标签:
原文地址:http://www.cnblogs.com/iCocos/p/4949375.html