分组 UITableView 自定义绘制单元格,而不更改背景颜色?

Posted

技术标签:

【中文标题】分组 UITableView 自定义绘制单元格,而不更改背景颜色?【英文标题】:Grouped UITableView custom draw cell, without changing background color? 【发布时间】:2012-05-14 18:10:45 【问题描述】:

我在分组单元格中自定义绘制表格单元格。如何获得正确的背景颜色?

我实际上在单元格内有一个视图,并且正在自定义如何在其drawRect: 中绘制该视图。 我试过这个:

- (void)drawRect:(CGRect)rect

    BOOL isHighlighted = self.highlighted;
    CGRect frame = self.bounds;

    CGContextRef c = UIGraphicsGetCurrentContext();

    if ( !isHighlighted ) 
        [[UIColor whiteColor] set];
        CGContextFillRect( c, frame );
    

    // rest of drawing

这适用于普通表视图,但它不适合分组表视图。它看起来像 96% 的灰色。

看起来像这样:

如果您的屏幕没有很好地校准,您可能看不到差异。但它就在那里。

当我尝试这个时:

    if ( !isHighlighted ) 
        //[[UIColor whiteColor] set];
        //CGContextFillRect( c, frame );
    

我得到了一个黑色的背景,像这样:

我的假设是我需要在我的绘图例程中填充每个像素。

当我尝试这个时:

    if ( !isHighlighted ) 
        [[self backgroundColor] set];
        CGContextFillRect( c, frame );
    

我也得到黑色背景。我认为我认为backgroundColortransparentColor

我也试过这个:

    if ( !isHighlighted ) 
        CGContextFillRect( c, frame );
    

同一个黑盒子。

如何在不使用吸管并将[UIColor colorWithWhite: alpha:] 硬编码到我的应用程序的情况下匹配分组表格视图的背景颜色?

【问题讨论】:

【参考方案1】:

获取其超级视图的背景颜色

UIColor * background = [self.superview backgroundColor];

我认为在自定义绘制矩形顶部调用 [super drawRect:rect]; 可以解决此问题

【讨论】:

我不得不去两个superviews,但这种方法对我有用。【参考方案2】:

你试过了吗?

 [[UIColor clearColor] set];

【讨论】:

以上是关于分组 UITableView 自定义绘制单元格,而不更改背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

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

使用图像设置 backgroundView 时缺少分组的 UITableView 的单元格分隔符

UITableView 中的自定义绘图在 5 个单元格后失败

自定义 UITableView 单元格中的 UILabel 未随核心数据更改而更新

iPhone-如何将 Storyboard 与自定义 UITableView 单元格和 CellWithIdentifier 一起使用

有没有办法从UITableView中删除分隔线?