UITableViewCell阻止背景中的标签

时间:2009-12-07 13:53:42

标签: iphone uitableview

我的UITableViewCell内部的标签阻挡了背景图片,我遇到了问题。似乎它只发生在未选择状态。我尝试将背景颜色设置为清除,但是没有这样做。它采用了tableview的背景颜色。我是否也必须设置标签背景图片?

// Neither of these worked...
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];

screen shot

这是我的cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleTableIdentifier"];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SimpleTableIdentifier"] autorelease];
    }

    UIImage *image = [UIImage imageNamed:@"TableRow.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.contentMode = UIViewContentModeScaleToFill;
    cell.backgroundView = imageView;
    [imageView release];

    UIImage *imageSelected = [UIImage imageNamed:@"TableRowSelected.png"];
    UIImageView *imageViewSelected = [[UIImageView alloc] initWithImage:imageSelected];
    imageViewSelected.contentMode = UIViewContentModeScaleToFill;
    cell.selectedBackgroundView = imageViewSelected;
    [imageViewSelected release];


    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.textLabel.textColor = [UIColor whiteColor];
    cell.textLabel.text = [[self.trivia.questionsets objectAtIndex:indexPath.row] valueForKeyPath:@"title"];

    return cell;
}

更新:有点解决了......

如果我将表格的背景颜色(我假设在所有东西下面)设置为清除,那么我的图像会突然显示出我期望的位置,但是桌面背景现在显示在所有内容的顶部?这是预期的行为吗? (尚未查看有关此文档的文档)

tableView.backgroundColor = [UIColor redColor];
cell.contentView.backgroundColor = [UIColor orangeColor];
cell.textLabel.backgroundColor = [UIColor yellowColor];

screen shot 2

...并且要完成,如果我将表格和单元格的背景颜色设置为清除,我们就很好。 textlabel背景颜色没有区别。

tableView.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];
cell.textLabel.backgroundColor = [UIColor yellowColor];

screen shot 3

1 个答案:

答案 0 :(得分:0)

是的,这是预期的行为。

您的tableview是一个位于其他一切之前的子视图。如果桌面视图前面有某些东西(即背景),则会使桌面模糊不清。