当我将UITableViewCells backgroundColor
设置为半透明颜色时,它看起来不错,但是该颜色不能覆盖整个单元格。imageView
和accessoryView
周围的区域以[UIColor clearColor]
的形式出现...
我已经尝试过将cell.accessoryView.backgroundColor
和cell.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/