4

我实现了一个风格为 UITableViewStylePlain 的 UITableView。我正在使用具有纯色背景颜色的自定义标题视图,它应该是不透明的。但是标题不是不透明的,当单元格在标题下滚动时,它们是可见的。我想让标题不透明,但我不明白这是怎么做到的。

4

4 回答 4

5

当表格视图是普通视图时,如果其部分中的至少一个单元格在屏幕上,则它是可见的。所以看起来表格视图在内部某处为标题设置了一个背景视图,带有一些 alpha。但是您可以将背景视图设置为自定义视图,然后为其设置背景。

当您在以下位置创建自定义标题视图时,您可以这样做tableView:viewForHeaderInSection:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
  UITableViewHeaderFooterView *header = ...
  header.backgroundView = [UIView new];
  header.backgroundView.backgroundColor = [UIColor greenColor];

  return header;
}

或者,如果您不想创建自定义标题视图,那么您可能可以在tableView:willDisplayHeaderView:forSection:默认标题视图中设置背景。

于 2014-01-17T01:33:48.143 回答
3

对于任何可能感兴趣的人来说,解决方案很简单,但并不明显。在找到可行的方法之前,我尝试了不同的方法。我知道这是可以做到的,因为我至少在另一个应用程序中看到过它。

这些涉及使用tableView:viewForHeaderInSection:委托方法创建的自定义标头。

什么不起作用:

1) 设置在此委托方法中创建的父视图的 backgroundColor 属性。出于某种原因,此颜色在用于自定义标题视图时会被忽略。

2)我注意到子视图不透明,所以我尝试在父视图和现有子视图之间放置一个中间视图。我将此视图的背景颜色设置为纯色。这也被忽略了。

什么有效:

3) 使用以下代码设置 backgroundColor 属性:

 [UIColor colorWithPatternImage:[UIImage imageNamed:@"anImage.png"]];

出于某种原因,简单的颜色不起作用,但从图像创建的颜色可以。

我将把这个问题留到另一天,以防有人想解释这里发生了什么,就如何呈现自定义标题视图而言。我在文档中没有看到关于这个小细节的任何内容,但我可能错过了它。

于 2012-04-24T19:59:21.447 回答
1

我遇到了同样的问题。确实有效的解决方案是将 UITableViewHeaderFooterView 子类化,然后覆盖 drawRect ...

于 2013-12-30T19:24:13.600 回答
1

斯威夫特 4:

只需将 Tableview 单元格的背景颜色属性设置为白色或您想要的任何颜色。你可以从故事板本身设置它。

于 2018-08-10T11:38:23.400 回答