zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    阿里云镜像市场,让“上云”从此零门槛!
    #火到没朋友# 攒够¥12.18, 召唤超级英雄助你上云
    阿里云1218,百亿资本助力开发者
    万网云解析全面升级开放,支持海外IP解析!
    困知,勉行—阿里云服务观
    考考你!布署上云最快需要几步?
    Ta们,用云计算改变着更多普通人的生活,所以,我们1218
    【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
    【阿里云产品公测】性能测试服务PTS的初步尝试
    .NET LINQ概述
  • 原文地址:https://www.cnblogs.com/Apologize/p/6306655.html
Copyright © 2011-2022 走看看