A: 

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.

Ramin
I was using that article for inspiration, but unfortunately he doesn't use transparent cells.Setting the contentView background color had very strange effects. I also tried setting contentView.opaque = NO, but still looked awful.
Ben Scheirman
+5  A: 

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;

}

mgile
actually I had to do 1 more thing. The cell.textLabel.backgroundColor needed to be set *AFTER* the cell's background color. I have NO idea why I need to do this, but now it's working. Thanks Mike!
Ben Scheirman