美文网首页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