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

时间:2011-12-21 21:02:11

标签: ios uitableview

我正在开发一款拥有大量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];
}

我的表视图目前看起来像这样: Just to give you an idea...

更新

正如Amit Vyawahare建议的那样,我尝试将背景纹理应用于标题和每个单元格的背景。

,当你在运动中看到这两个问题时,这两个问题都更为明显。但是我会尽力而为。

  • 首先,背景始终可见。 我已从表格中删除背景颜色以使其更明显

Scrolling areas vs. non-scrolling areas

在任何地方看到黑色,tableView的背景纹理都是可见的,而将不会使用tableView 滚动。 Grouped tableView样式在每个单元格的任一侧插入5像素边框,无法更改。此外,员工ID部分下方没有页脚,我甚至已经实现了-tableView:heightForFooterInSection:以返回0.0,但是那里仍然存在差距。

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

if you squint, you'll see a totally rad 3d image!

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

1 个答案:

答案 0 :(得分:0)

首先用UIViewController替换你的UITableViewController并向它添加一个UITableView。将autoresizingMask设置为灵活的宽度/高度。现在你有一些与UITableViewController等效的东西,但可以更好地控制视图层次结构。

然后在tableview下方添加一个视图(实际上:先添加一个视图),其中包含背景。

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