如何在水平滚动时保持UITableView内容不被剪裁?

时间:2011-10-19 04:30:41

标签: ios ipad uitableview interface-builder horizontal-scrolling

我们正在使用Monotouch开发一个特定于iPad的应用程序,但我怀疑同样的问题适用于标准的xcode / cocoa应用程序。

我们的问题是我们有UITableViews必须在水平和垂直方向上滚动(请不要建议我们改变设计,因为这不是一个可行的选择)。

我们可以通过将ContentSize设置为适当的大小(我们将宽度设置为包含数据的宽度和高度到UITableView的高度)来轻松地使UITableView以这种方式运行。

然而,这会产生令人不快的副作用:当水平滚动时,标题视图和分隔每行的行被剪裁为帧的大小。有趣的是,内容继续显示,但我怀疑这是通过添加到单元格内容视图的子视图显示我们的数据的功能。

我已经尝试了UITableView中的每个设置组合(剪切,设置边界,不透明度等)都无济于事。

我们已经验证,如果我们将UITableView嵌入到UIScrollView中,这将正常工作,但我们宁愿不采用这种方法,因为无法重用单元格(这些表格视图可能会提供大量数据)和其他原因(苹果说没有)。

有人能指出我们正确的方向吗?我不明白为什么这么难。

1 个答案:

答案 0 :(得分:5)

我不保证以下内容有效,但您可以尝试以下方法。

要修复标题视图,您需要将标题内容添加到虚拟容器视图中,然后使用此虚拟容器视图作为表标题。 现在,您应该将containerView.clipsToBounds = FALSE和标题内容的框架设置为所需的宽度(如果您知道的话)。

另外,请确保标题内容没有设置自动调整大小的掩码。无论ContainerView发生什么,我们都不希望它改变它的框架。

这背后的想法是tableView将调整containerView的框架大小,但会保持您的标题内容框架不变。通过将剪辑设置为FALSE,您应该将内容泄漏到容器外... ...瞧...希望

要修复分隔线,我能想到的唯一解决方案是在单元格中创建自己的分隔线。然后,您可以完全控制其大小。

我在标题视图中使用类似的内容,我设法让内容泄漏。