zoukankan      html  css  js  c++  java
  • UITableView去掉最后切割线的一种方法

    UITableView以style:UITableViewStylePlain方式创建时。仅仅要有cell,就会有一条黑线 哪怕至于一个cell也会有,如图

    alt

    在网上找了集中方法,都不好使,比方http://blog.csdn.net/l_ch_g/article/details/9290727,中的两种方法,都尝试不好使

    第一种方法

     
    1、加方法
    -(void)setExtraCellLineHidden: (UITableView *)tableView
    {
        UIView *view = [UIView new];
        view.backgroundColor = [UIColor clearColor];
        [tableView setTableFooterView:view];
        [view release];
    }
     
    2、在

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        //设置tableView不能滚动

        [self.tableView setScrollEnabled:NO];

        //在此处调用一下就能够啦 :此处如果tableView的name叫:tableView

        [self setExtraCellLineHidden:self.tableView];

    }

     

    在iOS4.3和iOS5.0中通过:值得注意的是在iOS4.3中能够直接设置footer为nil。可是在5.0不行。由于UITableView会默认生成一个Footer。

    (详见iOS Release Notes中的说明:Returning nil from the tableView:viewForHeaderInSection: method (or its footer equivalent) is no longer sufficient to hide a header. You must override tableView:heightForHeaderInSection: and return 0.0 to hide a header.)

    plain类型的tableview当显示的数据非常少时,以下的cell即使不显示数据也会有切割线。能够通过以下这个函数去掉多余的切割线。

     

    - (void)setExtraCellLineHidden: (UITableView *)tableView

    {

        UIView *view =[ [UIView alloc]init];

        view.backgroundColor = [UIColor clearColor];

        [tableView setTableFooterView:view];

        [view release];

    }

    当tableview的dataSource为空时,也就是没有数据可显示时。该方法无效,仅仅能在numberOfRowsInsection函数。通过推断dataSouce的数据个数。如果为零能够将tableview的separatorStyle设置为UITableViewCellSeparatorStyleNone去掉切割线,然后在大于零时将其设置为

    UITableViewCellSeparatorStyleSingleLine

     
    另外一种方法


    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    
        // Drawing our own separatorLine here because I need to turn it off for the
        // last row. I can only do that on the tableView and on on specific cells.
        // The y position below has to be 1 less than the cell height to keep it from
        // disappearing when the tableView is scrolled.
        UIImageView *separatorLine = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, cell.frame.size.height - 1.0f, cell.frame.size.width, 1.0f)];
        separatorLine.image = [[UIImage imageNamed:@"grayDot"] stretchableImageWithLeftCapWidth:1 topCapHeight:0];
        separatorLine.tag = 4;
    
        [cell.contentView addSubview:separatorLine];
    
        [separatorLine release];
    }
    
    // Setup default cell setttings.
    ...
    UIImageView *separatorLine = (UIImageView *)[cell viewWithTag:4];
    separatorLine.hidden = NO;
    ...
    // In the cell I want to hide the line, I just hide it.
    seperatorLine.hidden = YES;
    ...

    In viewDidLoad:

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 

    最后,创建UITableView时,使用style:UITableViewStyleGrouped,方法解决这个问题。

    ​代码例如以下

    1self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];
    2 
    3_tableView.separatorColor = [UIColor clearColor];
    4_tableView.backgroundView=[[UIView alloc] init];    //改变表的背景视图
    5_tableView.backgroundColor = [UIColor whiteColor]; //加入颜色

    使用UITableViewStyleGrouped类型创建的UITableView。背景颜色须要使用上面两个方法设置的才干生效,普通的backgroundcolor方法无效。
    同一时候由于UITableViewStyleGrouped模式默认会有Section高度,所以。要继承下heightForHeaderInSection方法,记住在UITableViewStyleGrouped,直接改动
    sectionHeaderHeight的方式是不行的。

    -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
        // This will create a "invisible" footer
        return 0.01f;
    }


  • 相关阅读:
    Docker基础 ubuntu安装docker
    layui.laytpl 模板引擎用法
    golang 中 strings 包的 Replace 用法介绍笔记
    golang之结构体
    Mysql复习秘籍
    NFS 共享存储
    Rsyncd 同步服务
    企业服务器架构
    基础面试题二
    基础面试题一
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7043465.html
Copyright © 2011-2022 走看看