美文网首页
iOS tableview中分割线的设置

iOS tableview中分割线的设置

作者: wwwwwwdi | 来源:发表于2018-07-05 17:35 被阅读56次

    今天在设置tableviewCell的分割线的时候,尝试了几种方法

    这里涉及到两个概念:

    1. tableview的属性: tableFooterView

    2. Tableview的代理方法中,设置的section的 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

    这里分析下两个的区别:

    tableviewFooterView,是整个tableview的footer

    而代理方法中设置的,是每个section footer的高度和页面

    image.png

    然后来说tableview中设置分割线的问题:

    1. 上面说的两条属性都不设置的时候:是这样的效果
    image.png

    然后我们只设置代理:

    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    
        return [UIView new];
    
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    
        return CGFLOAT_MIN;
    
    }
    

    效果如下:

    image.png

    然后我们可以修改一些参数:

    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    
        return [WDTool createLineWithFrame:CGRectMake(15, 0, SCREENWIDTH - 30, 0.5) color:UIColorFromRGB(0xdddddd)];
    
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    
        return 0.5f;
    
    }
    

    比如生成一条0.5px的线,效果又变成了这样:

    image.png

    但是有个问题:我们设置生成的线是距离左右边各15px的距离,但是效果图可以看到是左右贯穿的。

    所以,如果需求是要设置全部cell的分割线是左右贯穿的话,可以使用这种方法

    首先要配置cell的separatorInset属性为.Zero

    cell.separatorInset = UIEdgeInsetsZero;
    
    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    
        return [WDTool createLineWithFrame:CGRectMake(0, 0, SCREENWIDTH, 0.5) color:UIColorFromRGB(0xdddddd)];
    
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    
        return 0.5f;
    
    }
    

    效果图:

    image.png

    然后我们只设置 self.tableview.tableFooterView = [UIView new];

    image.png

    可以看到这个就是我们想要的结果:

    第一行上边没有分割线,最后一行下边有分割线。

    总结一下:

    知识点:

    • Cell的separatorInset属性, 可以设置分割线的间距(.Zero属性为贯穿屏幕)

    • tableview的separatorStyle属性:可以设置有没有分割线

    • tableview的sectionFooter代理方法:如果返回了空view,则没效果,如果返回了非空view,则可隐藏没有数据的cell的分割线,然后在section最后一个cell的底部生成一个贯穿屏幕的高度自定的view

    • tableview的tableFooterView属性:如果设置等于空view,则可以隐藏没有数据的cell的分割线,然后在最后一个section的最后一个cell上,添加一个跟cell是separatorInset属性匹配的分割线。

    案例:

    1. 上下都要分割线的情况:
      自定义cell,然后在cell上自己放两个线,然后设置 self.tableview.separatorStyle = UITableViewCellSeparatorStyleNone;

    2. 最上面没有分割线,最下边也没分割线:

    设置代理方法,返回一个空的view([UIView new])高度返回 CGFloat_MIN

    1. 最上面没有分割线,最下边有贯穿的分割线(跟别的cell的分割线风格不匹配)

    设置代理方法,返回一个非空的view并设置想要的高度,即可

    1. 最上面没有分割线,最下边有跟别的cell匹配的分割线

    只设置 self.tableview.tableFooterView = [UIView new];即可

    参考链接

    UITableView设置全屏分隔线的几种方法比较

    相关文章

      网友评论

          本文标题:iOS tableview中分割线的设置

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