ios如何在添加或删除文本时自动调整uilabel的高度(和numberOfLines = 0)

时间:2012-07-12 16:59:42

标签: iphone ios resize height uilabel

我有一个显示用户“生物”的UILabel。我还让用户能够通过在用户点击时弹出uitextview来编辑此文本,然后一旦用户完成添加或删除此uitextview中的文本,我说label.text = textview.text,因此它更新了bio标签的文字。
但是,我想要一种方法告诉标签根据添加或删除的文本数量来修复它的高度。有没有办法做到这一点?提前谢谢!

NathanF

4 个答案:

答案 0 :(得分:4)

CGRect labelFrame = label.frame;
labelFrame.size = [textview.text sizeWithFont:label.font
                            constrainedToSize:CGSizeMake(label.frame.size.width, CGFLOAT_MAX)
                                lineBreakMode:label.lineBreakMode];
label.frame = labelFrame;

这将根据新文本调整标签(高度)(同时尊重字体和换行符模式)。

注意:自6.0起,UILineBreakMode已被弃用。请改用NSLineBreak。

Source

答案 1 :(得分:4)

致电

[labelName sizeToFit];

设置新文本后。另外,请确保设置自动换行或字符换行:

[labelName setLineBreakMode:UILineBreakModeWordWrap];

[labelName setLineBreakMode:UILineBreakModeCharacterWrap];

如果您有任何其他问题,请与我们联系!

答案 2 :(得分:1)

此方法“ sizeWithFont ”在iOS 7中已弃用,您可以使用以下方法:

CGRect rect = [YourText boundingRectWithSize:CGSizeMake(labelWidth, CGFLOAT_MAX)
                                       options:NSStringDrawingUsesLineFragmentOrigin
                                       context:nil];
 NSLog(@"Height: %f",rect.size.height);

有关详细信息,请查看:Apple's Documentation

答案 3 :(得分:0)

您可以使用[NSString sizeWithFont:...]来衡量标签中使用的文字。

另请参阅:How to get the size of a NSString