实现可变大小的多行 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】:

您可能想查看UITextViewuserInteractionEnabled 属性。这应该允许将输入传递给UITableView,以便您滚动。

【讨论】:

这似乎工作,滚动禁用。我认为我的 UITextView 的某个地方没有得到适当的大小。 是的,最终能够获得正确的自动调整参数集以使其发挥作用。【参考方案2】:

这是我在此主题上发布的博客的链接。我使用了 numberOfLInes = 0 的 UILabel。我希望这会有所帮助。

Sample Project with Variable Sized UITableViewCell

【讨论】:

【参考方案3】:

在使用 userInteractionEnabled=NO、scrollEnabled=NO 并在 IB 中设置正确的自动调整参数时,我认为使用 numberOfLines=0 和相同的自动调整参数的 UILabel 最终是一个更好的主意,对于下一个人。

【讨论】:

以上是关于实现可变大小的多行 UITableCell 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作可拉伸的自定义 UITablecell

UITableCell 中的 UILabel 大小不正确,直到 UITableView 滚动

使用 C# 在 oracle 数据库中更新多行的最佳方法

UITableCell 高度未正确调整

实现 DependencyProperty 并避免“CA2104:不要声明只读可变引用类型”的最佳方法是啥?

iPhone 开发:滑动 UITableCell