tableview的header和footer取消悬停或者是粘滞


tableview的header和footer取消悬停或者是粘滞,网上找的有效方法是用

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.tag == 100102) { UITableView *tableview = (UITableView *)scrollView; CGFloat sectionHeaderHeight = 20; CGFloat sectionFooterHeight = 20; CGFloat offsetY = tableview.contentOffset.y; if (offsetY >= 0 && offsetY <= sectionHeaderHeight) { tableview.contentInset = UIEdgeInsetsMake(-offsetY, 0, -sectionFooterHeight, 0); }else if (offsetY >= sectionHeaderHeight && offsetY <= tableview.contentSize.height - tableview.frame.size.height - sectionFooterHeight) { tableview.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, -sectionFooterHeight, 0); }else if (offsetY >= tableview.contentSize.height - tableview.frame.size.height - sectionFooterHeight && offsetY <= tableview.contentSize.height - tableview.frame.size.height) { tableview.contentInset = UIEdgeInsetsMake(-offsetY, 0, -(tableview.contentSize.height - tableview.frame.size.height - sectionFooterHeight), 0); } } } 

但有个问题,若有下拉刷新,那么整个tableview的样式会发生改变。因为下拉刷新也是靠contentInset设置。
简单的方法是设置tableview的style为UITableViewStyleGrouped。这样接解决了悬浮问题。但又会引发新问题,默认下section之间的间距很大,仅仅单独设置header或footer的高度是不行的。显示效果的各个section间距其实是section头部和底部的组合。所以得组合设置才有效果

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 0.01f; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)]; view.backgroundColor = [UIColor clearColor]; return view; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 10; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)]; view.backgroundColor = [UIColor clearColor]; return view; }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM