如何有效去掉分割线(UITableViewCellSeparatorView),并或控制单条分割线

起因:

新项目中,有的cell要分割线,有的cell不要分隔线,又有的cell分割线拒里前端15pix。搞得我也真是醉了,如果用自定义分割线的话也不好处理。然后我看了一下UITableviewCell中view的分级,如下图:
如何有效去掉分割线(UITableViewCellSeparatorView),并或控制单条分割线_第1张图片
在UITableviewCell中,UITableViewCellContentView_UITableViewCellSeparatorView这两种视图作为子视图存在,并且_UITableViewCellSeparatorView作为私有变量。

期间的解决方案:

我曾经尝试在view加载完成,设置视图数据的时候,for循环拿到分割线(_UITableViewCellSeparatorView),但是结果并不理想,要么是只能拿到一条,要么是一条也拿不到。

下面正题来了:

我后来突发奇想,能不能再view加载之前做处理,至少UITableviewCell的-[addSubView:]的方法我们还是可以重载的。然后结果如下(嘿嘿嘿):

- (void)addSubview:(UIView *)view
{
    if (![view isKindOfClass:[NSClassFromString(@"_UITableViewCellSeparatorView") class]] && view)
          [super addSubview:view];
}

如何有效去掉分割线(UITableViewCellSeparatorView),并或控制单条分割线_第2张图片
怎么样,看没看到终端里view的类型,就是之前说的分割线的视图。

总结

像上面的代码,我们的要求是要求某个cell不要分割线,所以在加载的时候,系统给UITableViewCell添加subview的时候,直接屏蔽掉分隔线即可。其他情况还可以另行操作,比如说修改某条分割线的颜色或是修改某条分割线的左侧距离(别跟我说系统的,系统的改一条全部都会变)。

你可能感兴趣的:(iOS,OC)