起因:
新项目中,有的cell要分割线,有的cell不要分隔线,又有的cell分割线拒里前端15pix。搞得我也真是醉了,如果用自定义分割线的话也不好处理。然后我看了一下UITableviewCell中view的分级,如下图:
在UITableviewCell中,UITableViewCellContentView和_UITableViewCellSeparatorView这两种视图作为子视图存在,并且_UITableViewCellSeparatorView作为私有变量。
期间的解决方案:
我曾经尝试在view加载完成,设置视图数据的时候,for循环拿到分割线(_UITableViewCellSeparatorView),但是结果并不理想,要么是只能拿到一条,要么是一条也拿不到。
下面正题来了:
我后来突发奇想,能不能再view加载之前做处理,至少UITableviewCell的-[addSubView:]的方法我们还是可以重载的。然后结果如下(嘿嘿嘿):
- (void)addSubview:(UIView *)view
{
if (![view isKindOfClass:[NSClassFromString(@"_UITableViewCellSeparatorView") class]] && view)
[super addSubview:view];
}
怎么样,看没看到终端里view的类型,就是之前说的分割线的视图。
总结
像上面的代码,我们的要求是要求某个cell不要分割线,所以在加载的时候,系统给UITableViewCell添加subview的时候,直接屏蔽掉分隔线即可。其他情况还可以另行操作,比如说修改某条分割线的颜色或是修改某条分割线的左侧距离(别跟我说系统的,系统的改一条全部都会变)。

本文介绍了在新项目中处理不同cell分割线需求的方法。通过重载UITableViewCell的`addSubview:`方法,实现在加载时控制是否显示及自定义分割线效果。

1802

被折叠的 条评论
为什么被折叠?



