我意识到 iOS 7 尚未正式发布,我们不应该讨论它,但我正在疯狂地试图找出这个问题。在 iOS 6 上,我的表格视图是透明的并且看起来很棒。第一次运行iOS 7,背景是白色的。
我尝试将表格背景颜色、单元格颜色等设置为 UIColor clearColor 但没有任何变化。
如何解决这个问题?
我意识到 iOS 7 尚未正式发布,我们不应该讨论它,但我正在疯狂地试图找出这个问题。在 iOS 6 上,我的表格视图是透明的并且看起来很棒。第一次运行iOS 7,背景是白色的。
我尝试将表格背景颜色、单元格颜色等设置为 UIColor clearColor 但没有任何变化。
如何解决这个问题?
// Fix for iOS 7 to clear backgroundColor
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView = [[UIView new] autorelease];
cell.selectedBackgroundView = [[UIView new] autorelease];
在 cellForRowAtIndexPath 中
另外,请确保您的 tableview 实际上具有透明背景(在故事板中):
把这个:
cell.backgroundColor = [UIColor clearColor];
在这个部分:
cellForRowAtIndexPath
首先尝试将 backgroundView 设置为 nil。
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];
不确定这是否是 iOS7 文档的更改,还是一直存在,只是不影响背景颜色,但根据UITableView 类参考 @property backgroundView
“您必须将此属性设置为 nil 才能设置表格视图的背景颜色。”
编辑:更正的代码语法
这已经得到了回答,但在很多方面都是错误的。
您需要实现以下委托方法:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
}
您不能将修复程序放在 cellForRowAtIndexPath 中,因为这是在渲染单元格之后,并且它会在背景设置为清除之前闪烁白色背景(在较慢的设备上)。
使用这个委托方法,你的问题就解决了!
实际上,根据文档(UITableViewCell 类参考),更改单元格背景颜色的官方正确位置是不同的:
无论您使用预定义单元格还是自定义单元格,都可以使用 backgroundView 属性或更改继承的 backgroundColor 属性来更改单元格的背景。在 iOS 7 中,单元格默认为白色背景;在早期版本的 iOS 中,单元格继承了封闭表格视图的背景颜色。如果要更改单元格的背景颜色,请在 tableView 委托的 tableView:willDisplayCell:forRowAtIndexPath: 方法中进行。
快速 3、4 和 5
cell.backgroundColor = UIColor.clear
这是一个相当令人沮丧的问题。这是我目前的解决方案:
将此添加到您的UITableViewCell
子类中。
- (void)didMoveToSuperview {
[super didMoveToSuperview];
self.backgroundColor = [UIColor clearColor];
}
这在 iOS7+ 中对我有用:
self.tableView.backgroundColor =[UIColor blueColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = nil;`
然后在cellForRowAtIndexPath:
cell.backgroundColor = [UIColor clearColor];
当我为每个单元格编辑一个清晰的背景颜色和为表格本身编辑一个清晰的颜色时,这只对我有用。
为表格设置清晰的颜色:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
initMenu()
myTableView.backgroundColor = UIColor.clearColor()
}
设置单元格的颜色:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath)
cell.backgroundColor = UIColor.clearColor()
return cell
}
试试这个代码片段
cell.contentView.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];
一件好事。UITable的默认颜色好像是白色的(不知道为什么)
但最好改变它。
第一组
tableView.backgroundColor = [UIColor clearColor];
第二套
tableCell.backgroundColor = [UIColor clearColor];
为表视图创建 IB Outlet @IBOutlet weak var yourTable : UITableView!
在视图中加载
override func viewDidLoad() {
yourTable.delegate = self
yourTable.dataSource = self
yourTable.backgroundColor = UIColor.clearColor()
}
如果你想清除 Cell 的颜色,也可以在
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
cell.backgroundColor = UIColor.clearColor()
}
在我的情况下,单元格是使用 xib 创建的。似乎 xcode5 上的界面生成器无法将 clearColor 设置为 cell.backgroundColor。
我需要做的只是设置
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// get the cell from the nib
//then force the backgroundColor
cell.backgroundColor = [UIColor clearColor]
return cell;
}
backgroundColor
在我的应用程序中,UITableViewCell
当[UIColor clearColor]
我更新iOS 7
.
尝试
[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[myTable setSeparatorInset:UIEdgeInsetsZero];
和
cell.backgroundColor = [UIColor clearColor];
迅速 3
override func viewDidLoad() {
super.viewDidLoad()
tableView.backgroundColor = UIColor.clear
}
只需为表格和单元格选择“查看背景上的清除颜色”即可。
// Fix iOS 7 clear backgroundColor compatibility
// I Think this two lines only are enough
cell.backgroundColor = [UIColor clearColor];
cell.selectedBackgroundView = [[UIView new] autorelease];
放
tableView.backgroundColor = [UIColor clearColor];
在 viewDidLoad 中。
如果这不起作用,请尝试:
tableView.backgroundView = nil;
在迅速 3
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
cell.backgroundColor = .clear
cell.backgroundView = UIView()
cell.selectedBackgroundView = UIView()
return cell
}