UITableView 单个分割线的处理

作者: henu_Larva | 来源:发表于2017-12-25 15:41 被阅读39次

    当我们使用UITableView 时,单独处理某一个分割线成了很头疼的问题。在项目初期我们可以选择自定义分割线的方案进行处理,一旦页面进度较久时再进行重构,无疑很痛苦<所以前期一定要看清楚 UI 图的细节啊啊啊~~~>。
    通过打印 cell的 subviews,我们可以一窥 cell 的内部结构。

    for (UIView *subView in self.subviews) {
            
            NSLog(@"cellSub === %@",subView);
        }
    

    观察打印结果我们会发现一个 '_UITableViewCellSeparatorView'视图,而它,就是 cell 上的分割线。
    既然找到了对象,那我们就可以对其进行处理了。我们可以通过在 cell 内重写 - (void)addSubview:(UIView *)view 方法来拦截分割线被添加的过程。
    大致如下:

    - (void)addSubview:(UIView *)view {
        
        if (self.indexPath.item == 0) {
            if (view && ![view isKindOfClass:[NSClassFromString(@"_UITableViewCellSeparatorView") class]]) {
                [super addSubview:view];
            }
        }
        else {
            if (view) {
                [super addSubview:view];
            }
        }
    }
    

    这样我们就处理了分区内第一个 cell 的底部分割线的移除工作。其他线条也类似,改变下判断条件就 OK 了。
    另外如果我们的 UITableView 的类型是 grouped,我们会发现在每个分区第一个 cell 的顶部也会出现一条分割线<(⊙v⊙),就是这么蛋疼~>,这个时候我们可以结合视图的类型以及 y 轴的坐标值进行判断进而处理。简直 so easy~~~
    以上。

    相关文章

      网友评论

        本文标题:UITableView 单个分割线的处理

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