代码之家  ›  专栏  ›  技术社区  ›  Mark Adams

如何修复溢出包含uiTableViewCell的多行uiLabel?

  •  0
  • Mark Adams  · 技术社区  · 15 年前

    在自定义的uiTableView单元格中显示多行uiLabel时遇到问题。

    我现在用这个来计算细胞的高度…

    NSString *cellText = [howtoSection objectAtIndex:row];
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
    CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    
    return labelSize.height + 20;
    

    …这是标签本身。

    // Calc the height
    NSString *cellText = [howtoSection objectAtIndex:row];
    CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cell.textLabel.font constrainedToSize:constraintSize lineBreakMode:cell.textLabel.lineBreakMode];
    
    // Create the label frame
    CGRect newFrame = cell.contentLabel.frame;
    newFrame.size.height = labelSize.height;
    cell.contentLabel.frame = newFrame;
    
    [cell.contentLabel setText:[howtoSection objectAtIndex:row]];
    

    一切都按计划进行,只是标签被向下推出了它的单元。如果不是因为这个明显的上边距,一切都会合适的。

    这是一个链接到我在模拟器中看到的图片…

    iPhone Rendering Bug

    如有任何帮助,我们将不胜感激。

    2 回复  |  直到 12 年前
        1
  •  1
  •   John Topley    12 年前

    我看不到你的设置 cell.contentLabel.font 在你显示的代码中。

    标签尺寸计算也使用 cell.textLabel.font 计算其大小,但使用 contentLabel 变量。

    是否可能使用与计算不同的字体进行渲染?

        2
  •  0
  •   Ecton    15 年前

    如何将标签添加到ContentView?原来的定位好像是错误的,因为高度看起来计算正确。如果您对分配新框架进行注释,标签是否位于正确的位置?我敢打赌不是。