带静态单元格的UITableView - 每个部分有不同的分色?

时间:2012-07-22 12:37:29

标签: objective-c ios uitableview

我在故事板中完成了4个部分的静态单元格UITableView。但是,我想更改一个部分的分隔符颜色([UIColor clearColor])。我怎样才能做到这一点???它真的可能吗?

我可以将separatorColor设置为整个表的clearColor,但不仅仅是针对一个特定的部分。

表格视图部分的屏幕截图:

Screenshot of table view section

3 个答案:

答案 0 :(得分:1)

AFAIK没有办法解决这个问题。但是您可以将背景图像放在底部有分隔符的单元格中,并将separatorstyle设置为UITableViewCellSeparatorStyleNone。所以你在每个单元格中都有自己的分隔符。

答案 1 :(得分:0)

也许您可以通过将该部分的标题文本设置为空字符串来实现目标。

答案 2 :(得分:0)

一种方法是创建自己的UIView子类,并在drawRect:中创建自己的自定义绘图。您将获取此视图并将其添加为表格视图单元格的backgroundView。像这样:

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];
    // Drawing code
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 1.0);

    // Draw black line
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
    CGFloat components[] = {0.0, 0.0, 0.0, 0.3};
    CGColorRef blackColor = CGColorCreate(colorspace, components);

    CGContextSetStrokeColorWithColor(context, blackColor);

    CGContextMoveToPoint(context, 0, rect.size.height - 1.5);
    CGContextAddLineToPoint(context, rect.size.width, rect.size.height - 1.5);
    CGContextStrokePath(context);
    CGColorRelease(blackColor);

    // Draw white bottom line
    CGFloat whiteComponents[] = {1.0, 1.0, 1.0, 0.75f};
    CGColorRef whiteColor = CGColorCreate(colorspace, whiteComponents);

    CGContextSetStrokeColorWithColor(context, whiteColor);

    CGContextMoveToPoint(context, 0, rect.size.height - 0.5);
    CGContextAddLineToPoint(context, rect.size.width, rect.size.height - 0.5);
    CGContextStrokePath(context);
    CGColorRelease(whiteColor);

    // Draw top white line
    CGFloat whiteTransparentComponents[] = {1.0, 1.0, 1.0, 0.45};
    CGColorRef whiteTransparentColor = CGColorCreate(colorspace, whiteTransparentComponents);

    CGContextSetStrokeColorWithColor(context, whiteTransparentColor);

    CGContextMoveToPoint(context, 0, 0.5);
    CGContextAddLineToPoint(context, rect.size.width, 0.5);
    CGContextStrokePath(context);
    CGColorRelease(whiteTransparentColor);



    CGColorSpaceRelease(colorspace);
}