UITableView清除背景
我意识到,iOS 7还没有正式发布,我们不应该讨论,但我疯了试图找出这个问题。 在iOS 6上,我的表格视图是透明的,看起来不错。 第一次运行iOS 7,背景是白色的。
我已经尝试使桌面backgroundColor,单元格颜色等等,以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先到零。
[self.tableView setBackgroundView:nil]; [self.tableView setBackgroundColor:[UIColor clearColor]];
不知道这是iOS7的文档更改或一直在那里,只是不影响背景颜色,但每UITableView类参考@property backgroundView
“您必须将此属性设置为零来设置表视图的背景颜色。”
编辑:更正的代码语法
这已被回答,但在许多方面不正确。
你需要实现下面的委托方法:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [cell setBackgroundColor:[UIColor clearColor]]; }
您不能将修复程序放在cellForRowAtIndexPath中,因为这是在单元格渲染之后,并且在背景被设置为清除(在较慢的设备上)之前它将闪烁白色背景。
使用这个委托方法,你的问题就解决了!
实际上,根据文档( UITableViewCell类参考 ),更改单元格背景颜色的官方正确位置是不同的:
无论您使用预定义还是自定义单元格,都可以使用backgroundView属性或通过更改inheritance的backgroundColor属性来更改单元格的背景。 在iOS 7中,默认情况下,单元格具有白色背景; 在早期版本的iOS中,单元格inheritance封闭表视图的背景颜色。 如果要更改单元格的背景颜色,请在表视图委托的tableView:willDisplayCell:forRowAtIndexPath:方法中执行此操作。
这是一个相当令人沮丧的问题。 这是我目前的解决scheme:
将其添加到您的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];
试试这个代码片段
cell.contentView.backgroundColor = [UIColor clearColor]; cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];
这只对我工作,当我编辑一个清晰的背景颜色为每个单元格和清晰的颜色表本身..两个程序化
为表格设置清晰的颜色:
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 }
第一套
tableView.backgroundColor = [UIColor clearColor];
第二套
tableCell.backgroundColor = [UIColor clearColor];
为表格视图创buildIB Outlet @IBOutlet weak var yourTable:UITableView!
在视图中加载
override func viewDidLoad() { yourTable.delegate = self yourTable.dataSource = self yourTable.backgroundColor = UIColor.clearColor() }
如果你想清除单元格的颜色也做到这一点
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { cell.backgroundColor = UIColor.clearColor() }
迅速3,4
cell.backgroundColor = UIColor.clear
在我的应用程序中,当我更新iOS 7
时,我不得不将UITableViewCell
类的backgroundColor
设置为[UIColor clearColor]
颜色。
尝试
[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone]; [myTable setSeparatorInset:UIEdgeInsetsZero];
和
cell.backgroundColor = [UIColor clearColor];
有一件事很好。 UITable的默认颜色似乎是白色的(我不知道为什么)
但更好的改变。
在我的情况下,单元格是使用xib创build的。 看起来像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; }
只需在视图背景上为表格和单元格select“清除颜色”即可。
// Fix iOS 7 clear backgroundColor compatibility // I Think this two lines only are enough cell.backgroundColor = [UIColor clearColor]; cell.selectedBackgroundView = [[UIView new] autorelease];
迅速3
override func viewDidLoad() { super.viewDidLoad() tableView.backgroundColor = UIColor.clear }
组
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 }