When I set the UITableViewCells backgroundColor
to a semi-transparent color, it looks good, but the color doesn\'t cover the entire cell.
The area around th
Ben and I figured this out today, here's the summary for the group in case this catches anybody else.
You have to set the cell background and cell.textLabel.backgroundColor
every time cellForRowAtIndexPath
is called, not just during the alloc/init
phase (i.e. if the tableView
has a dequeue cache miss).
So, the code becomes this:
- (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;
}
Have you looked into setting the background color of the cell's contentView
and keeping the cell, accessory, and image views transparent?
Also, this article might help show you some alternatives.