我正在开发一款拥有大量UITableViews的应用程序,并且我正在尝试为它们提供带纹理的背景颜色。我需要使用Grouped样式,因为当用户滚动时,我不希望节标题在文本字段上浮动。
我遇到的问题是,当我使用分组样式时,背景纹理不会随表格滚动; 它会在桌子上方滚动时保持原位。我觉得这有点奇怪,我宁愿把背景滚动到桌子上,就像它在平原风格中那样。不幸的是,因为我不能将标题视图浮动在所有内容之上,所以这似乎不是一个选项。
有没有人能够做到这一点?
以下是一些相关代码:
- (void)loadView {
[super loadView];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"texturedPattern.png"]];
// this prevents the cells from replicating the background texture
self.tableView.backgroundView = [[UIView alloc] initWithFrame:self.view.bounds];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// disable the default grouped border since we're doing it manually with the textField
cell.backgroundView = nil;
cell.backgroundColor = [UIColor clearColor];
}
我的表视图目前看起来像这样:
更新
正如Amit Vyawahare建议的那样,我尝试将背景纹理应用于标题和每个单元格的背景。
,当你在运动中看到这两个问题时,这两个问题都更为明显。但是我会尽力而为。
在任何地方看到黑色,tableView的背景纹理都是可见的,而将不会使用tableView 滚动。 Grouped tableView样式在每个单元格的任一侧插入5像素边框,无法更改。此外,员工ID部分下方没有页脚,我甚至已经实现了-tableView:heightForFooterInSection:
以返回0.0,但是那里仍然存在差距。
这在密码部分上方最明显,你可以看到纹理没有正确对齐,它看起来有点像纸上的“折叠”。如果那是客户想要的那样,那我觉得哪个很酷。它是可见的,但在第二个屏幕截图的几乎每个边缘都不太明显。这是因为纹理实际上非常大:200x200(400x400 @ 2x),并且颜色有轻微的变化,除非发生这种错位。
答案 0 :(得分:0)
首先用UIViewController替换你的UITableViewController并向它添加一个UITableView。将autoresizingMask设置为灵活的宽度/高度。现在你有一些与UITableViewController等效的东西,但可以更好地控制视图层次结构。
然后在tableview下方添加一个视图(实际上:先添加一个视图),其中包含背景。
最后,将scrollview的委托设置为您的类,并通过相应地更新您的背景视图来响应滚动事件。