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 +上仅将表格视图自定义单元格的左上角和右上角半径转角