0

我需要获取 UILabel 中的行数,以便可以将另一个 UILabel 移动到文本最后一行的底部。我已经做好了:

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

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

4

1 回答 1

1

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

相反,请考虑使用 UIView 大小调整方法:

// 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;

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

于 2010-09-26T17:57:25.273 回答