实现可变大小的多行 UITableCell 的最佳方法是啥?
Posted
技术标签:
【中文标题】实现可变大小的多行 UITableCell 的最佳方法是啥?【英文标题】:What is the best way to implement a variable-sized multi-line UITableCell?实现可变大小的多行 UITableCell 的最佳方法是什么? 【发布时间】:2009-01-12 14:34:22 【问题描述】:我正在尝试显示一个充满 twitter 状态的表格(是的,这是 Stanford Presence 2 分配),它们的大小是可变的。我可以使用近似的代码(来自accompanying lecture 9)相对轻松地确定我的行的适当高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *) indexPath
NSString *text = ...;
UIFont *font = [UIFont systemFontOfSize:...];
CGSize withinSize = CGSizeMake(tableView.width, 1000];
CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeWordWrap];
return size.height + somePadding;
我尝试了两种方法(并对这两种方法进行了一些调整)来将多行文字换行字段放入我的表格行中。
将 UILabel 作为子视图添加到我的自定义 UITableCell 子类中,并将 numberOfLines
属性设置为基于上述高度计算的数字(例如 6)或 0(理论上无限)。 numberOfLines
被忽略;我看到 1 或 2 行,没有更多。
添加只读 UITextView 作为子视图。这有 UITextView 吃掉我的滚动的问题;我最终在 UITextView 行内滚动,而不是从一行到另一行平滑移动。如果我在 UITextView 上禁用滚动,我最终将无法滚动。
这是很常见的事情;实现它的最佳方法是什么?
【问题讨论】:
【参考方案1】:您可能想查看UITextView
的userInteractionEnabled
属性。这应该允许将输入传递给UITableView
,以便您滚动。
【讨论】:
这似乎工作,滚动禁用。我认为我的 UITextView 的某个地方没有得到适当的大小。 是的,最终能够获得正确的自动调整参数集以使其发挥作用。【参考方案2】:这是我在此主题上发布的博客的链接。我使用了 numberOfLInes = 0 的 UILabel。我希望这会有所帮助。
Sample Project with Variable Sized UITableViewCell
【讨论】:
【参考方案3】:在使用 userInteractionEnabled=NO、scrollEnabled=NO 并在 IB 中设置正确的自动调整参数时,我认为使用 numberOfLines=0 和相同的自动调整参数的 UILabel 最终是一个更好的主意,对于下一个人。
【讨论】:
以上是关于实现可变大小的多行 UITableCell 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
UITableCell 中的 UILabel 大小不正确,直到 UITableView 滚动