您的位置:首页 > 产品设计 > UI/UE

ios6及以下设置uitableview背景颜色

2014-10-14 17:48 435 查看
刚接触ios的时候已经ios6了,遇到一个兼容ios5和ios6的问题。

在iOS6中,对于UITableViewStyleGrouped类型的UITableView,通过直接修改继承自UIViewbackgroundColor属性的方法来设置UITableView的背景色无效。

比如,在AppDelegate中设置窗口的颜色为淡黄色
self.window.backgroundColor = [UIColor colorWithRed:1.00f green:0.91f blue:0.82f alpha:1.00f];


在一个UIViewController的viewDidLoad方法中增加一个UITableView,设置其backgroundColor为透明色。
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style: UITableViewStyleGrouped];
tableView.dataSource = self;
tableView.delegate = self;
tableView.backgroundColor = [UIColor clearColor];
[self.view addSubview:tableView];


那么在iOS5及之前版本的模拟器上,运行的效果如下:



因为UITableView的背景色设为了[UIColor clearColor],所以tableView的背景色为UIWindow的颜色。

但是在iOS6模拟器和运行iOS6设备上的显示效果如下:



此时UITableView的背景色为默认的灰色,我们通过backgroundColor设置的背景色无效。

这个问题只在UITableViewStyleGrouped类型的UITableView中出现,UITableViewStylePlain类型的tableView没有这个问题,因为Group类型的TableView有个backgroundView,而plain类型的TableView没有(backgroundView属性为nil),目前看来,这可能因为backgroundView在中间挡住了背景色,这是否iOS6的bug还待确认。关于backgroundView,还可以参考下这里iPad
Table backgroundView。

目前对于这个问题的解决方法是将Group类型的tableView的backgroundView设为一个新的空白View或简单的设置为nil.如下
tableView.backgroundView = [[UIView alloc]init];
tableView.backgroundColor = [UIColor clearColor];



tableView.backgroundView = nil;
tableView.backgroundColor = [UIColor clearColor];


参考:

UITableView clearColor background not working

iPad Table backgroundView
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: