【问题标题】: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;
}

我尝试了两种方法(并对这两种方法进行了一些调整)来将多行文字换行字段放入我的表格行中。

  1. 将 UILabel 作为子视图添加到我的自定义 UITableCell 子类中,并将 numberOfLines 属性设置为基于上述高度计算的数字(例如 6)或 0(理论上无限)。 numberOfLines 被忽略;我看到 1 或 2 行,没有更多。

  2. 添加只读 UITextView 作为子视图。这有 UITextView 吃掉我的滚动的问题;我最终在 UITextView 行内滚动,而不是从一行到另一行平滑移动。如果我在 UITextView 上禁用滚动,我最终将无法滚动。

这是很常见的事情;实现它的最佳方法是什么?

【问题讨论】:

    标签: cocoa-touch


    【解决方案1】:

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

    【讨论】:

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

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

    Sample Project with Variable Sized UITableViewCell

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2010-09-21
        • 2021-09-15
        • 1970-01-01
        • 2010-10-02
        • 2012-03-31
        • 2011-01-04
        • 2010-09-09
        • 2015-08-21
        相关资源
        最近更新 更多