iOS 8 UITableView背景色外观

时间:2014-08-27 15:09:52

标签: ios objective-c iphone uitableview ios8

Xcode 6 beta 6,尝试在外观代理中更改所有UITableView的背景颜色:

[[UITableView appearance] setBackgroundColor:[UIColor redColor]]

但似乎它没有用。

重现的步骤:

1创建单个视图项目

2在 storyboard

中将UITableView添加到ViewController

3将代表设置为查看控制器并更改IB中的背景:

enter image description here

4添加动态单元格并配置数据源:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return 2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell1Identifier" forIndexPath:indexPath];
  return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  return 60.f;
}

5在app delegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.
  [[UITableView appearance] setBackgroundColor:[UIColor redColor]];

  return YES;
}

6运行应用并观看不正确的颜色:

enter image description here

有任何建议如何解决? 为每个表设置背景颜色并不是一个好的解决方案。

6 个答案:

答案 0 :(得分:10)

尝试在InterfaceBuilder中将BackgroundColor“重置”为“Default”(即使它已经默认,你会看到一点颜色变化)

这不适用于分组样式表视图

<强>更新

这对我有用

[[UIScrollView appearance] setBackgroundColor:[UIColor redColor]];

答案 1 :(得分:5)

UITableViewCell的清除颜色在XCode 6中无法在Tablet中运行。以下解决方法为我解决。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

     cell.backgroundColor = [UIColor redColor];
}

答案 2 :(得分:2)

对于iOS 8,似乎至少在我们的情况下,当我们在该视图中使用表格设置视图的背景颜色时,我们必须显式将表格和单元格背景颜色设置为清除为了从视图中显示所需的颜色。我想,在以前的iOS版本中,单元格默认为透明,但似乎不再是这种情况。

答案 3 :(得分:1)

将单元格背景颜色设置为透明 的tableView:willDisplayCell:forRowAtIndexPath:

答案 4 :(得分:1)

[UITableVIew backgroundColor]未标记UI_APPEARANCE_SELECTOR。外观代理仅在选择器标记为UI_APPEARANCE_SELECTOR时才有效。

答案 5 :(得分:0)

似乎外观代理在iOS 8.0.x中展示了一个看似未报告的错误;它与iOS 7的更改无关,涉及表格单元格的默认背景颜色。

相对好的消息是,这似乎只是iOS 8.0和8.0.2之间的一个问题,因为:

  1. 7.1.2上的我的iPhone 4S没有这个问题,
  2. 我的同事的iPhone 6运行8.1并没有这个问题。
  3. 在大多数用户升级之前,您必须在对象本身上明确设置背景,然后将我们送回预先出现的时代:(