UILabel的行数

时间:2010-09-26 17:22:50

标签: iphone objective-c text uilabel lines

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

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

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

1 个答案:

答案 0 :(得分: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中修复。