内容的 UITableView 背景图像

Posted

技术标签:

【中文标题】内容的 UITableView 背景图像【英文标题】:UITableView background image for content 【发布时间】:2013-06-17 14:20:06 【问题描述】:

我有高度 = 1000px 的 UITableView,我需要设置可滚动背景。 我知道如何为 tableview 设置背景图像,但在这种情况下,背景图像将无法滚动。

目前唯一的想法是: 1)创建具有适当高度(约 1000 像素)的滚动视图,并为该滚动视图设置背景图像。然后将 UITableView 的框架设置为滚动视图的边界(并禁用 UITableView 的滚动)。

但我的想法相当糟糕,因为我有很多带有很多图像的单元格,而在我的方法中,所有单元格都会保留在内存中。

在tableview中实现可滚动背景的最佳方法是什么?

附言

我有未知高度的 tableview 标题(取决于服务器的响应)

【问题讨论】:

【参考方案1】:

如果它是可重复的模式,一种方法是分割图像,重复中间部分并仅在 contentOffset 到达 contentSize 的边界时显示顶部/底部。或者只为第一个/最后一个单元格设置顶部/底部部分,并为每个其他单元格设置中心(可重复部分)。

编辑:

正如我所说,对于可重复的模式:

裁剪用于页眉、页脚和中间的元素

当然,对于包含信息的页眉和页脚,您可能需要更大的页眉/页脚图像:

获取零件并将它们分配为您的cellForRowAtIndexPath: 方法中的背景。您可以使用单个图像完成所有操作,而无需将裁剪的部分分离到不同的文件中,即already discussed here。

【讨论】:

你能给出一些代码吗?因为我无法想象在这种情况下用户是否真的看到了可滚动的背景(在适当的时候没有出现在顶部) 我有未知高度的表头(取决于服务器的响应) 但主要问题是如何将标题视图的高度(它可以从 50 到 500 像素不等)与第一个单元格的背景图像同步 你总是可以在'header'部分之后添加'middle'的部分来填充header view的背景。 Alexander,在这种情况下,顶部和中间部分的乞求像素不适合【参考方案2】:

官方文档中有一些关于如何制作“同步”滚动视图的示例代码。由于表视图是滚动视图,因此它也应该与表视图同步。所以让你的背景成为表格视图后面的滚动视图,并同步它。

关键步骤是这样的:

[[NSNotificationCenter defaultCenter] addObserver:self
                     selector:@selector(synchronizedViewContentBoundsDidChange:)
                     name:NSViewBoundsDidChangeNotification
                       object:synchronizedContentView];

然后在您的处理程序中轻松匹配背景的内容偏移量与表格视图。

【讨论】:

这是一个有趣的解决方案,我会将其标记为正确,但请给出一些代码(我不明白 UIView 的 NSViewBoundsDidChangeNotification 如何检测 tableview 的偏移量) 搜索 ios 文档以同步滚动视图。他们有示例代码。 我试过但没有找到如何将它与表格视图同步 嗯,哎呀,它只在 Mac Cocoa 文档中,而不是 Cocoa touch。 developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/… iOS 上似乎不存在该通知。您也许可以在滚动视图的 center 或 bounds 属性上使用键值观察。

以上是关于内容的 UITableView 背景图像的主要内容,如果未能解决你的问题,请参考以下文章

分组 UITableView 的背景颜色在 iOS7 中不会透明

UITableView 和单元格重用

编辑模式 UITableView,不能阻止内容视图向右移动

如何更改 UITableView 背景图像的大小?

UITableView - 背景图像大小和位置问题

在 UITableView 单元格中定位 UIImageViews