如何使用 Core graphics 更改 UITableViewCell 的背景颜色

How to change the background colour of a UITableViewCell using Core graphics

我正在关注 this tutorial 核心图形。我现在要更改 UITableViewCell 的背景颜色。根据教程我应该得到的结果是这样的:

而我得到的结果是这样的(完全红色的单元格是我在表格视图中选择的单元格):

本教程适用于 Xcode 4.6,这可能就是我没有得到预期结果的原因。这是我正在使用的代码。

自定义背景class:

CustomCellBackground.m

-(void) drawRect: (CGRect) rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    UIColor * redColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1];

    CGContextSetFillColorWithColor(context, redColor.CGColor);
    CGContextFillRect(context, self.bounds);
}

tableviewcontroller 中的 tableview 代码 class:

TableViewController.m


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString * CellIdentifier = @"Cell";
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    NSString * entry;

    if (![cell.backgroundView isKindOfClass:[CustomCellBackground class]]) {
        cell.backgroundView = [[CustomCellBackground alloc] init];
    }

    if (![cell.selectedBackgroundView isKindOfClass:[CustomCellBackground class]]) {
        cell.selectedBackgroundView = [[CustomCellBackground alloc] init];
    }


    if (indexPath.section == 0) {
        entry = self.thingsToLearn[indexPath.row];
    } else {
        entry = self.thingsLearned[indexPath.row];
    }
    cell.textLabel.text = entry;

    return cell;
}

请指出我做错了什么,并指出正确的方向。 提前致谢。

您可以执行此操作,将标签颜色设置为清除颜色,如下所述。

SWIFT

cell.textLabel.backgroundColor = UIColor.clearColor()

Objective C

cell.textLabel.backgroundColor = [UIColor clearColor];