我有一个自定义的UITableView子类,它将分隔符行作为子视图插入,如下所示:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
CGRect frame = [self bounds];
frame.origin.y = CGRectGetMaxY(frame) - 1;
frame.size.height = 1;
UIView *separator = [[[UIView alloc] initWithFrame:frame] autorelease];
[separator setBackgroundColor:[UIColor whiteColor]];
[separator setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin];
[self addSubview:separator];
}
return self;
}
这在我的细胞下划出了一条很好的线条。但是,当tableview处于编辑模式并且我拖动以重新排序单元格时,此子视图会消失!
其他一切看起来都是一样的,并且在拖动时单元格的不透明度会降低,但为什么会删除此子视图?
答案 0 :(得分:1)
覆盖drawRect的工作原理:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGContextFillRect(context, CGRectMake(0, CGRectGetMaxY(rect)-.5, CGRectGetWidth(rect), .5));
CGContextFillRect(context, CGRectMake(0, 0, CGRectGetWidth(rect), .5));
CGContextRestoreGState(context);
}
答案 1 :(得分:-1)
不使用分隔线作为子视图,而是使用表视图附带的默认分隔线,并通过单元格的backgroundView图层更改borderColor。
cell.backgroundView.layer.borderColor = [UIColor blueColor];
显然需要 #import <QuartzCore/QuartzCore.h>
。
此外,如果您使用的是分组表视图,请确保匹配外部边框:
tableView.separatorColor = [UIColor blueColor];
再次确保分隔符行:)(所以不要将tableView separatorStyle属性设置为none:tableView.separatorStyle = UITableViewCellSeparatorStyleNone
)