当我将UITableViewCells backgroundColor设置为半透明颜色时,它看起来不错,但是该颜色不能覆盖整个单元格。
imageViewaccessoryView周围的区域以[UIColor clearColor]的形式出现...

我已经尝试过将cell.accessoryView.backgroundColorcell.imageView.backgroundColor显式设置为与单元格的backgroundColor相同的颜色,但是它不起作用。它在图标周围放置一个小框,但不会扩展到填充左边缘。右边缘似乎不受此影响。

我怎样才能解决这个问题?

编辑:这是原始表单元格代码:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        cell.opaque = NO;
        cell.textLabel.backgroundColor = [UIColor clearColor];
        cell.backgroundColor = [UIColor colorWithRed:.1 green:.1 blue:.1 alpha:.4];
        cell.textColor = [UIColor whiteColor];
    }

    cell.imageView.image = [icons objectAtIndex:indexPath.row];
    cell.textLabel.text = [items objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    return cell;
}

最佳答案

本和我今天已经弄清楚了,这是小组的摘要,以防万一。

您必须在每次调用cell.textLabel.backgroundColor时设置单元格背景和cellForRowAtIndexPath,而不仅是在alloc/init阶段(即,如果tableView出队缓存未命中)。

因此,代码变为:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        cell.opaque = NO;
    }

    // All bgColor configuration moves here
    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.backgroundColor = [UIColor colorWithRed:.1 green:.1 blue:.1 alpha:.4];
    cell.textColor = [UIColor whiteColor];
    cell.imageView.image = [icons objectAtIndex:indexPath.row];
    cell.textLabel.text = [items objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    return cell;
}

关于iphone - UITableViewCell透明背景(包括imageView/accessoryView),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1501959/

10-14 21:29