19

在 iOS 6

[uitableview setBackgroundColor:] 表格样式为 UITableViewStyleGrouped 时不设置颜色

而是看到默认的条纹背景。

如果样式是 UITableViewStyleGrouped 我们应该如何设置表格的背景

4

8 回答 8

31
[tableViewInstance setBackgroundView: nil];
于 2012-09-13T16:46:48.013 回答
19

环境

[tableView setBackgroundView: nil];

在 iOS 5 中给我带来了问题,所以我使用的是:

UIView* bview = [[UIView alloc] init];
bview.backgroundColor = [UIColor yellowColor];
[tableView setBackgroundView:bview];

iOS 5 和 6 兼容!

于 2012-09-21T15:02:38.720 回答
5
self.view.backgroundColor = TTSTYLEVAR(mainPageBackground);
self.tableView.separatorColor   = TTSTYLEVAR(mainPageBackground);
self.tableView.backgroundView = nil;

为我修好了。不过,您必须小心这可能产生的其他影响。

于 2012-09-13T16:40:37.950 回答
4

另一个简单的解决方案是在 IB 中更改 UITableView 的背景颜色。例如,我改为“白色”,它再次起作用。

不知何故,将背景颜色保留为“默认”使得 iOS 6 不会打扰代码中的任何其他颜色设置。

于 2012-09-21T10:12:07.130 回答
3

我会谨慎将 backgroundView 设置为 nil。以我的经验,这会导致用户在最新的 XCode 4.5 下滚动时显着降低渲染性能。这是我对这个问题的解决方案,它不影响滚动性能:

- (void) viewWillLayoutSubviews
{
    CGRect rect = [[UIScreen mainScreen] bounds];
    CGRect frame = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);

    UIView *backgroundView = [[[UIView alloc] initWithFrame:frame] autorelease];
    backgroundView.backgroundColor = [UIColor clearColor];
    self.tableView.backgroundView = backgroundView;
}
于 2012-09-20T00:17:52.080 回答
1

在 ios 6 中,分组表视图的方法,即 backgroundColor 已被弃用,因此改为使用

[tableview setBackgroundView : nil];
于 2013-02-06T04:15:21.980 回答
1

我知道这已被标记为已回答,但以下内容也有效:

[[UITableView appearance] setBackgroundColor:[UIColor colorWithRed:233.0/255.0 green:233.0/255.0 blue:233.0/255.0 alpha:1.0]];

[[UITableView appearance] setBackgroundView:nil];

这样您就不必为应用程序中的每个 tableView 设置。感谢作者的原始提示!

于 2013-02-26T04:16:53.693 回答
0

将背景设置为 nil 可以完成这项工作,是的,它不会与以前的版本有任何问题。

于 2012-12-17T05:23:54.863 回答