美文网首页Interview征服iOS
UITableView 去掉分割线

UITableView 去掉分割线

作者: b470b9fc7145 | 来源:发表于2017-03-14 19:06 被阅读2157次

    前言

    最近项目中有很多地方要去除 cell 的分割线,在这里总结下:

    1. 关于分割线最好方式是不要设置分割线,然后在自定义cell 里面控制分割线的显示隐藏.
    2. 用系统的分割线,然后将设置separatorInset,让其超出屏幕,达到隐藏的效果.

    代码

    1. 方法一: 设置一开始就将分割线设置为clearColor,然后根据需要加分割线
    • viewDidLoad 设置为clearColor或UITableViewCellSeparatorStyleNone类型
    self.tableView.separatorColor = [UIColor clearColor];
    //或者
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    
    • cellForRowAtIndexPath
    if(indexPath.row != self.newCarArray.count-1){
        UIImageView *line = [[UIImageView alloc] initWithFrame:CGRectMake(0, 44, 320, 2)];
        line.backgroundColor = [UIColor redColor];
        [cell addSubview:line];
    }
    
    1. 方法二:
    • ios7.0多了separatorInset这个属性,我们可以根据这个属性让分割线超出屏幕,达到隐藏的效果.
    cell.separatorInset = UIEdgeInsetsMake(0.f, cell.bounds.size.width, 0.f, 0.f);
    
    • 对于section 的分割线,貌似separatorInset不起作用;通过视图查看,发现 cell 的分割线名字叫_UITableViewCellSeparatorView,所有 view 应该有addSubView方法,我们来重写addSubView来阻止分割线添加到 cell 中
    - (void)addSubview:(UIView *)view
    {
        //如果是_UITableViewCellSeparatorView就不让添加
        if (![view isKindOfClass:[NSClassFromString(@"_UITableViewCellSeparatorView") class]] && view)
        {
            [super addSubview:view];
        }
    }
    
    分割线的类名 去除cell分割线对比图

    demo

    参考文档

    1. hide separator line on one UITableViewCell
    2. Is there a way to remove the separator line from a UITableView?
    3. 如何有效去掉分割线(UITableViewCellSeparatorView),并或控制单条分割线

    相关文章

      网友评论

        本文标题:UITableView 去掉分割线

        本文链接:https://www.haomeiwen.com/subject/baghnttx.html