我使用UITableViewStylePlain样式实现了一个UITableView。我正在使用具有纯色背景的自定义标题视图,该视图应该是不透明的。但是标题不是不透明的,当它们在标题下滚动时,单元格可见。我想让标题不透明,但我不知道如何做到这一点。
答案 0 :(得分:4)
当表格视图是普通的时,如果其部分中的至少一个单元格在屏幕上,则它是可见的。所以看起来像表视图在内部用某些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:
中的背景设置为默认标题视图。
答案 1 :(得分:3)
对于任何可能感兴趣的人来说,解决方案很简单,但并不明显。在我找到有用的东西之前,我尝试了不同的东西。我知道它可以完成,因为我已经在至少一个其他应用程序中看到过它。
这些涉及使用由tableView:viewForHeaderInSection:
委托方法创建的自定义标头。
什么行不通:
1)设置在此委托方法中创建的父视图的backgroundColor属性。出于某种原因,当用于自定义标题视图时,将忽略此颜色。
2)我注意到子视图不透明,所以我尝试在父视图和现有子视图之间放置一个中间视图。我将此视图的背景颜色设置为纯色。这也被忽略了。
工作成果:
3)使用以下代码设置backgroundColor属性:
[UIColor colorWithPatternImage:[UIImage imageNamed:@"anImage.png"]];
出于某种原因,简单的颜色不起作用,但是从图像创建的颜色会起作用。
如果有人想要解释自定义标题视图的呈现方式,有人想要解释这里发生了什么,我将把这个问题留待另一天。我没有在文档中看到关于这个小细节的任何内容,但我可能错过了它。
答案 2 :(得分:1)
我遇到了同样的问题。有效的解决方案是子类UITableViewHeaderFooterView,然后覆盖drawRect ......
答案 3 :(得分:0)
迅速4:
只需将Tableview单元格的背景颜色属性设置为白色或您想要的任何颜色。您可以从故事板本身进行设置。