实现可变大小的多行表格单元的最佳方法是什么?

时间:2009-01-12 14:34:23

标签: cocoa-touch

我正在尝试显示一个充满了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上禁用滚动,我最终无法滚动。

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

3 个答案:

答案 0 :(得分:3)

您可能希望查看userInteractionEnabled的{​​{1}}属性。这应该允许输入传递到UITextView,以便滚动。

答案 1 :(得分:2)

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

Sample Project with Variable Sized UITableViewCell

答案 2 :(得分:0)

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