小坑:UITableView分组后最后一根分割线不显示

Posted 阿曌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小坑:UITableView分组后最后一根分割线不显示相关的知识,希望对你有一定的参考价值。

如图用section分隔开后每个section最后的cell的分割线不见了。

分隔的方法是:单独把一个section作为分隔块使用,即:section 0,有cell 2;section 1,没有cell,headView高12;section 2,有cell 2……以此类推。

要解决这个问题,想要分割线显示的话看来只能自定义,加到Layer上面去。

比如说在分隔section的上下加上分割线:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
    if(section % 2 - 1 == 0) 
        return 12;
    else return 0;


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    UIView* headView = [UIView new];
    headView.backgroundColor = [UIColor colorWithWhite:0.946 alpha:1.000];
    //分割线
    [headView.layer addSublayer:[CALayer separatorLayerInHeight:0]];
    if ([tableView numberOfSections] != section + 1)  //最后一个section不需要下横线(下面没有新section数据了)
        [headView.layer addSublayer:[CALayer separatorLayerInHeight:12]];
    
    return headView;
@implementation CALayer (SeparatorView)

+ (CALayer*)separatorLayerInHeight:(CGFloat)height 
    UIColor *borderColor = [UIColor colorWithWhite:0.709 alpha:1.000];
    CGFloat borderHeight = 0.3f;
    CALayer *layer = [CALayer layer];

    layer.frame = CGRectMake(0, height - borderHeight, SCREEN_WIDTH, borderHeight);
    layer.backgroundColor = borderColor.CGColor;
    return layer;

@end

效果:

以上是关于小坑:UITableView分组后最后一根分割线不显示的主要内容,如果未能解决你的问题,请参考以下文章

UITableView删除行到最后一条时崩溃

分组 UITableView 上的自定义背景图像

UITableView实现分组, 并且点击每个分组后展开

谁拿最后一根火柴 程序设计 大家帮帮忙!

iOS如何去除UITableView底部多余的分割线

请问下一根3米长的棍子,怎么找它的黄金分割点?