我尝试在UITableViewCell
上有条件地绘制一个分隔符,所以首先我设置[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
,然后在我的UITableViewCell
子类中我做了这个
.h文件
@property BOOL separator;
.m文件
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
if(self.separator)
CGContextSetStrokeColorWithColor(context, [[UIColor colorWithRed:188.0/255.0 green:186.0/255.0 blue:193.0/255.0 alpha:1.0] CGColor]);
else
CGContextSetStrokeColorWithColor(context, [[UIColor clearColor] CGColor]);
CGContextSetLineWidth(context, 0.5);
CGContextMoveToPoint(context, 55.0, self.bounds.size.height);
CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height);
CGContextDrawPath(context, kCGPathStroke);
}
和cellForRowAtIndexPath
内部方法我正在做这个
if(indexPath.section == 0) {
if(indexPath.row == 0) {
cell1 = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
cell1.lbl1.text = name;
cell1.lbl1.font = [UIFont fontWithName:@"Helvetica-Bold" size:17.0];
cell1.separator = YES;
}
}
// other cells with different identifiers...
if(indexPath.section == 5) {
cell1 = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
cell1.lbl1.text = @"March 25";
cell1.lbl1.font = [UIFont fontWithName:@"Helvetica-Regular" size:1.0];
cell1.separator = NO;
return cell1;
}
在第5部分中,我不想显示分隔符,所以我做了cell1.separator = NO;
,但为什么我仍然会得到它?
答案 0 :(得分:1)
由于表格单元格可重复使用,因此可能会重新绘制。如果separator属性为false,请尝试擦除它。
答案 1 :(得分:1)
在出列单元格后,可能不会在单元格对象上调用drawRect:
方法。您可以尝试为separator
属性添加setter,并在其中调用setNeedsDisplay
,如下所示:
- (void)setSeparator:(BOOL)separator
{
_separator = separator;
[self setNeedsDisplay];
}
这会在为drawRect:
属性分配新值后调用separator
方法。