代码之家  ›  专栏  ›  技术社区  ›  Jonathan.

UILabel中的行数

  •  0
  • Jonathan.  · 技术社区  · 14 年前

    我需要得到UILabel中的行数,这样我就可以将另一个UILabel移动到最后一行文本的底部。 我做过:

    int lines = [cellDetailTextLabel.text sizeWithFont:cellDetailTextLabel.font constrainedToSize:cellDetailTextLabel.frame.size lineBreakMode:UILineBreakModeWordWrap].height /16;
    

    但这并不完美,因为有些情况下UILabel是3行长的,但上面的代码只返回2行,但这不是所有3行UILabel的情况。

    1 回复  |  直到 14 年前
        1
  •  1
  •   tc.    14 年前

    最好将UILabel的文本布局视为一个黑框(当文本太长时,它会自动调整字体大小)。

    // Ask the label to shrink (or grow) until it fits its text:
    [cellDetailTextLabel sizeToFit];
    // Get the frame.
    CGRect r = cellDetailTextLabel.frame;
    // Move its origin to below cellDetailTextLabel
    r.origin.y = CGRectGetMaxY(r);
    // Set its size to the size of the second label
    r.size = cellLabel2.frame.size;
    // Finally, move the second label
    cellLabel2.frame = r;
    

    我注意到iphone4上文本大小的一些奇怪的行为(有时标签是一个额外的行太高或左右);我不确定这是否是在4.1中修复的。