【发布时间】:2011-11-07 01:23:41
【问题描述】:
我们有一个 UITableView,我们将其配置为像 Grid 一样,允许水平和垂直滚动。我们通过在自定义 UITableView 的 LayoutSubviews 方法中动态更改 ContentSize 来实现这一点,这有助于自动旋转、滚动等。
除了我们的几个较大的网格外,一切都按预期工作。当这些网格水平滚动(向左滑动)时,只要 ContentOffset.X 大于或等于 Bounds.Width,表格视图就会消失。它仍然存在并接收输入,但没有绘制任何内容。向右滑动时,一旦超过宽度阈值,就会重新绘制所有内容。
在网格大小小于配置的 UITableView 宽度的一半的情况下,不会出现此问题。我们无法更改网格的大小,因为它们是由希望数据可用的现场客户配置的。
我已尽可能多地检查和/或删除了我们的自定义绘图代码,但问题仍然存在。有人有什么想法吗?
【问题讨论】:
-
与 UIScrollView 相比,滥用 UITableView 并实现真正的多列解决方案以满足您的需求有什么优势?
-
使用 UITableView 的好处主要是单元格的重用。我们的用户在一个 5-20 列的给定列表中可能有数千条记录。如果我们实现了滚动视图,我们必须将表格视图调整为完整大小,以便滚动视图正确滚动,因此必须创建每个单元格。
-
如果我回想起我在 90 年代后期所做的游戏编程,在我们滚动到底部的每一位上,我们都会在隐藏的顶部创建下一个屏幕行。如果滚动了一个屏幕高度,则重新设置滚动偏移量并且已经填充了下一个屏幕。这在上下滚动时也有效。我认为同样的技术也适用于此。但确实比使用 UITableView 更辛苦。
标签: ipad uitableview xamarin.ios horizontal-scrolling