我正在开发一个有很多UITableViews的应用程序,我试图给它们带纹理的背景颜色.我需要使用Grouped样式,因为当用户滚动时,我不希望节标题在文本字段上浮动.
我遇到的问题是,当我使用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];
}
Run Code Online (Sandbox Code Playgroud)
我的表视图目前看起来像这样:
UPDATE
正如Amit Vyawahare建议的那样,我尝试将背景纹理应用于标题和每个单元格的背景.当你看到它时,有两个问题更加明显,但我会尽我所能.
在你看到黑色的任何地方,tableView的背景纹理都是可见的,它不会随tableView滚动.Grouped tableView样式在每个单元格的任一侧插入5像素边框,无法更改.此外,在Staff ID部分下面没有页脚,我甚-tableView:heightForFooterInSection:
至已经实现了返回0.0,但是那里仍然存在差距.
这在密码部分上面最为明显,你可以看到纹理没有正确对齐,它看起来有点像纸上的"折叠".如果那是客户想要的那样,那我觉得哪个很酷.它是可见的,但在第二个屏幕截图的几乎每个边缘都不太明显.这是因为纹理实际上非常大:200x200(400x400 @ 2x),并且除非发生这种不对齐,否则颜色的细微变化是不明显的.
首先用 UIViewController 替换 UITableViewController 并向其添加 UITableView。将 autoresizingMask 设置为灵活的宽度/高度。现在你有了相当于 UITableViewController 的东西,但对视图层次结构有更多的控制。
然后在表格视图下方添加一个视图(实际上:首先添加该视图)来保存背景。
最后,将滚动视图的委托设置为您的类,并通过相应地更新背景视图来响应滚动事件。
归档时间: |
|
查看次数: |
1377 次 |
最近记录: |