Set the background to [UIColor clearColor] than you can see the things behind.
views:
1339answers:
4You're drawing the background color for your cell incorrectly. A UITableViewCell
will be arranged so that the contentView
and accessoryView
sit side-by-side. (This is done so that the contentView
can clip its content so it doesn't overlap with the accessory view) The problem is not that the accessory view is opaque, it's that the gray background is simply not drawn behind the accessory view.
The correct way of customizing the background drawn behind a UITableViewCell
is to customize its backgroundView
. I haven't tried this, but since you're only changing the color, you might be able to simply set the backgroundColor
color on the backgroundView
to your desired color.
i faced this problem myself and found this. don't ask me why is working:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
[tableView setBackgroundColor:[UIColor clearColor]];
return 1;
}
I found the answer by having a look at the subviews of my custom table view cell.
It seems like the accessory view has a button sitting over it. By finding this button in the subviews and changing its color, i was able to update the background color behind the accessory button.
<UIButton: 0x3b4d690; frame = (277 0; 43 75); opaque = NO; layer = <CALayer: 0x3b3e0b0>>
for (UIView *aSubView in self.subviews) {
if ([aSubView isMemberOfClass:[UIButton class]]) {
aSubView.backgroundColor = [UIColor greenColor];
}
}
Unfortunately I was only able to reach this button within the
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
method of my custom table view cell class. I've used this successfully within my app to display a different highlight color when the user selects a cell. This should point you in the right direction.