UITableViewController的背景颜色设置为默认(白色),但显示为黑色

时间:2014-08-27 05:20:24

标签: ios uitableview colors storyboard interface-builder

在我的故事板中,我将表视图控制器的背景颜色设置为“默认”设置,在界面构建器中显示为白色。但是,当我运行应用程序时,表视图控制器的背景颜色为黑色。

enter image description here

3 个答案:

答案 0 :(得分:1)

这似乎是Apple代码中的一个错误。

重现的步骤:

  1. 创建一个全新的Xcode项目。
  2. 将表视图控制器拖放到情节提要板上,并使其成为初始视图控制器。
  3. 在表格视图控制器中选择表格视图,并将其背景颜色从“[white] Default”更改为“[white] Default”(即重新选择列表中的顶部选项)。
  4. 运行应用程序。
  5. 尽管Interface Builder将背景颜色显示为“[white] Default”,但运行时的实际背景颜色为黑色。它应该显然是白色的,因为这是Interface Builder报告的默认颜色。
  6. 如果查看xml文件,您会看到一些有趣的内容。将全新的表格视图控制器拖放到故事板上将显示在故事板中选择的“[白色]默认”选项,但xml将具有背景颜色条目:<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>。这很奇怪,因为通常当某些东西设置为默认值时,它将从xml文件中排除。

    在Interface Builder中,如果再次重新选择“[white] Default”选项,您会注意到透明视图背后的背景颜色(例如节标题)似乎会略有变化。这是因为即使“[white] Default”选项显示为已选中,它实际上已删除了xml文件中的<color>条目。通常,这应该选择视图的默认背景颜色。在这种情况下,它选择黑色。 Interface Builder UI现在不再与xml文件同步。

    在Interface Builder中,如果您现在选择“[白色]白色”选项,界面将显示“[白色]默认值”,一切都将恢复到最初删除表视图控制器时的状态故事板。

    这意味着当黑色和白色是所选选项时,Interface Builder会显示“[white] Default”。知道选择哪个的唯一方法是在运行时,或者注意Interface Builder中透明视图的细微差别。

    因此,为了解决这个问题,请不要在背景颜色设置中选择“[白色]默认”选项,选择“[白色]白色”选项。

    总结

    选择此项:

    enter image description here

    ...将显示:

    enter image description here

    ...但是表格视图将如下所示:(越野行为)

    enter image description here

    另一方面,选择这个:

    enter image description here

    ...将显示:

    enter image description here

    ...并且表格视图将如下所示:(正确行为)

    enter image description here

答案 1 :(得分:0)

要更改背景颜色,请尝试取出backgroundView属性,然后在所需的表视图上设置backgroundColor。

尝试使用它:

  [self.tableView setBackgroundView:nil];
  [self.tableView setBackgroundColor:[UIColor whiteColor]];

希望这可以帮到你。

答案 2 :(得分:0)

我在 xcode-7-beta 中遇到了同样的问题,并且唯一的&#34;解决方法&#34;我发现将TableView样式从Plain切换到Grouped