2012-07-12 33 views
0

我有一个UILabel,显示用户的“生物”。我也让用户能够通过在用户点击时弹出uitextview来编辑这些文本,然后一旦用户完成从这个uitextview添加或删除文本,我说label.text = textview.text,因此它更新了生物标签的文字。
但是,我想要一种方法告诉标签根据添加或删除多少文本来修复它的高度。有没有办法做到这一点?先谢谢你!ios如何autoresize uilabel的高度时添加文本或删除(和numberOfLines = 0)

NathanF

回答

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; 

这将根据新的文本(同时尊重字体和linebreakmode)调整标签(高度)。

注意:UILineBreakMode从6.0开始已被弃用。改用NSLineBreak。

Source

4

呼叫

[labelName sizeToFit]; 

设置在新文本之后。另外,还要确保你设置自动换行或字符换行,像这样:

[labelName setLineBreakMode:UILineBreakModeWordWrap]; 

[labelName setLineBreakMode:UILineBreakModeCharacterWrap]; 

让我知道如果您有任何其他问题!

+0

谢谢。这完全有效,但我的一个标准是保持相同的宽度。 – 2012-07-13 18:49:32

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

+0

我得到[__NSCFConstantString pointSize]:在使用上面的代码后发送给实例的无法识别的选择器 – 2014-11-03 13:14:38

相关问题