码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——项目实战总结&取消tableView中header和footer的粘性效果

时间:2015-11-09 12:42:32      阅读:640      评论:0      收藏:0      [点我收藏+]

标签:

取消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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!