Answers:
正如Apple DOC所说(UITableViewCell类参考):
... 在iOS 7中,默认情况下,单元格具有白色背景;在iOS的早期版本中,单元格继承了封闭表格视图的背景色。如果要更改单元格的背景颜色,请在表视图委托的tableView:willDisplayCell:forRowAtIndexPath:方法中进行更改。
因此,对于我的情况而言,要显示具有透明背景的单元格,只需要在表视图控制器中实现委托方法,如下所示:
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
}
只需注意:正如@null所说,“ ...界面生成器中似乎有一个错误……”,我不确定它是否确实存在该错误,但是似乎导致他的评论获得了好评。因此,如果您使用IB,可能会出现问题。:)
tableView:cellForRowAtIndexPath:
方法中执行此操作。
我进行了一些调查,发现单元格backgroundColor是由Appearance系统设置的。因此,如果应用程序中的所有单元格都有清晰的背景,那么最简单的解决方案是:
[[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]];
即使它们具有不同的背景,清晰的颜色似乎也是最方便的默认颜色。
UITableViewCell
S,所以这不是我的问题,以提供一个初始化设置背景色的超类clearColor
,但你猜怎么着?那没用...我的意思是,为什么,APPLE?
UITableViewCell
iOS 7中的的默认背景颜色为白色。
您必须backgroundColor
在代码中的某处设置该属性。例如,在新创建单元格后进行设置。
cell.backgroundColor = [UIColor clearColor];
实际上,我发现问题是由于未将UITableView的背景色设置为清除而引起的。如果将UITableViewCell的“背景”颜色更改为“清除”,但仍发现白色,请确保将UITableViewCell的背景色设置为“清除”(或任意设置)。
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];
在斯威夫特
tableView.backgroundView = nil
tableView.backgroundColor = UIColor.clearColor()
这绝对是一个iOS错误。在iOS 8中,Interface Builder
为iPhone 设置背景色效果很好,但在iPad中,总是这样whiteColor
。要解决此问题,请在cellForIndexPath
数据源消息中将其放入:
cell.backgroundColor = cell.backgroundColor
它将起作用。这就是我说这是一个bug的原因,因为代码本身非常杂乱无章,但可以正常工作。
可能是默认情况下选择了UITableViewCell。您可以使用Xcode 6的新可视调试器(或确切找出导致该白色单元格出现的视图)来确认这一点。
有趣的是,在知道了这一点之后。设置所选单元格的背景颜色为清除仍然不起作用。进行更多研究后,发现我在创建此自定义单元格时只需要修改选择样式:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// do customization here
}
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self setBackgroundColor:[UIColor clearColor]];
return self;
}
接受的答案无法为我解决问题。我必须这样做:
从表的数据源类cellForRowAtIndexPath方法中:
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
cell.backgroundColor = [UIColor clearColor]; //Make cell transparent
cell = [tableView dequeueReusableCellWithIdentifier:<#Reuse ID#> forIndexPath:indexPath]
。在较早的版本中,您删除indexPath参数,然后测试是否为nil,并initWithStyle:reuseIdentifier
按照nil情况下的代码片段进行实例化。
将UI对象添加到单元格时,Xcode 5 / IOS 7添加一个新的“内容视图”,它将成为该单元格中所有元素的超级视图。要设置单元格的背景色,请设置此内容视图的背景色。上面的解决方案对我没有用,但是这个对我来说很好。
Swift 1.2解决方案:
只需为单元格的背景色添加一个明确的定义,如下所示:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Configure the cell...
cell.backgroundColor = UIColor.clearColor()
return cell
}
遇到类似的问题,不得不
将此添加到代码以更正它
override func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool {
var bgColorView: UIView = UIView()
bgColorView.backgroundColor = UIColor(red: (76.0 / 255.0), green: (161.0 / 255.0), blue: (255.0 / 255.0), alpha: 1.0)
bgColorView.layer.masksToBounds = true
tableView.cellForRowAtIndexPath(indexPath)!.selectedBackgroundView = bgColorView
return true
}
您还可以使用颜色代码来使您的UITableView Cell有利可图。
[cell setBackgroundColor:[self colorWithHexString:@"1fbbff"]];
这是用于应用颜色代码方法的代码:
-(UIColor*)colorWithHexString:(NSString*)hex
{
NSString *cString = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
if ([cString length] < 6) return [UIColor grayColor];
if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];
if ([cString length] != 6) return [UIColor grayColor];
NSRange range;
range.location = 0;
range.length = 2;
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f)
green:((float) g / 255.0f)
blue:((float) b / 255.0f)
alpha:1.0f];
}