背景分组UITableView的纹理不会随表格滚动

Jos*_*nez 6 uitableview ios

我正在开发一个有很多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,但是那里仍然存在差距.

  • 其次,即使我能够摆脱这些差距,纹理也无法排列.再次,这很难看,因此我上传了一个视网膜屏幕截图,使其更容易:

如果你眯着眼睛,你会看到一个完全rad 3d图像!

这在密码部分上面最为明显,你可以看到纹理没有正确对齐,它看起来有点像纸上的"折叠".如果那是客户想要的那样,那我觉得哪个很酷.它是可见的,但在第二个屏幕截图的几乎每个边缘都不太明显.这是因为纹理实际上非常大:200x200(400x400 @ 2x),并且除非发生这种不对齐,否则颜色的细微变化是不明显的.

mar*_*man 0

首先用 UIViewController 替换 UITableViewController 并向其添加 UITableView。将 autoresizingMask 设置为灵活的宽度/高度。现在你有了相当于 UITableViewController 的东西,但对视图层次结构有更多的控制。

然后在表格视图下方添加一个视图(实际上:首先添加该视图)来保存背景。

最后,将滚动视图的委托设置为您的类,并通过相应地更新背景视图来响应滚动事件。