iPhone如何实现一个“宽”的UITableViewCell?

Posted

技术标签:

【中文标题】iPhone如何实现一个“宽”的UITableViewCell?【英文标题】:iPhone how to implement a "Wide" UITableViewCell? 【发布时间】:2011-12-19 16:46:45 【问题描述】:

我想要一个单元格宽度超过 320 点的 UITableView。用户应该能够横向滚动以查看 UITableViewCell 的不同部分。 UITableView 是否可能出现这种行为,还是我应该去尝试实现平铺 UIScrollView?

我尝试将 UITableView 包装在 UIScrollView 中,但结果很糟糕 - 它们争夺滚动手势,并且大多数情况下滚动视图获胜,从而阻止了表格被垂直遍历。

感谢任何输入!

谢谢!

更新:我尝试了建议的解决方案,它可以正常滚动,但 tableview 仍然只有 320 像素宽。 tableView 的宽度是否与窗口边界相关联?

【问题讨论】:

我认为如果你禁用 UIScrollView 反弹,使 contentsize 高度和框架高度等于可见的矩形高度(tableview 框架高度也)它不会垂直滚动,只有 tableview 会。请将您的代码发布到您在滚动视图中包装 tableView 的位置。 当用户向右平移时,你想让CELL向右滚动,还是整个表格? 我正在使用情节提要,代码只是一个 UITableView 和一个 UIScrollView。 【参考方案1】:

用滚动视图包裹表格视图是正确的方法。

UIScrollView 与

显示水平滚动条 启用滚动 自动调整为全屏

在里面,一个 UITableView

显示垂直滚动条 启用滚动

然后我设置表格视图的框架,w, 是表格视图的所有列的计算宽度,无论您的宽度如何,kTableScrollViewHeight 是表格视图和滚动视图的固定高度,在我的情况,例如 367 点(屏幕减去状态、导航栏和标签栏):

tv.frame = CGRectMake(0, 0, w, kTableScrollViewHeight);

以及滚动视图的内容大小

scrollView.contentSize = CGSizeMake(w, kTableScrollViewHeight);

如果您希望用户点击状态栏时滚动到顶部的行为,您可能需要设置

scrollView.scrollsToTop = NO;

因为否则滚动视图会从表格视图中移除点击。

【讨论】:

UITableView 是 UIScrollView 的子类。 那你为什么要把它放在另一个滚动视图中,如果你可以改变表格视图的属性呢? 额外的滚动视图是必要的,因为 UITableView 本身不会超出屏幕宽度,因为它会自动重置其 contentSize 除非您将其子类化、编写类别或做其他您不应该做的事情到。在滚动视图中,tableview 将根据周围的 contentSize 调整自己的大小。 我会试试scrollview和tableview解决方案 禁用弹跳有效,滚动视图现在水平滚动,表格视图垂直滚动。我的 tableview 比屏幕宽,但似乎没有完全填满可用空间,我会调查原因

以上是关于iPhone如何实现一个“宽”的UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Objective C iOS 从 iPhone X 中的表格视图顶部删除多余的空间

如何在Iphone +上仅将表格视图自定义单元格的左上角和右上角半径转角

多项选择 iPhone 应用程序 - UITableView?

opengl es 纹理不是二的幂(iphone)

我的 iPhone 认为它是 980 像素宽

iPhone - 设置应用程序宽导航栏后退按钮,不带文字