小坑: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分组后最后一根分割线不显示的主要内容,如果未能解决你的问题,请参考以下文章