iOS tableview中分割线的设置

2018-07-05  本文已影响56人  wwwwwwdi

今天在设置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

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

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

总结一下:

知识点:

案例:

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

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

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

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

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

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

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

参考链接

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

上一篇下一篇

猜你喜欢

热点阅读