我有一个UILabel,显示用户的“生物”。我也让用户能够通过在用户点击时弹出uitextview来编辑这些文本,然后一旦用户完成从这个uitextview添加或删除文本,我说label.text = textview.text,因此它更新了生物标签的文字。
但是,我想要一种方法告诉标签根据添加或删除多少文本来修复它的高度。有没有办法做到这一点?先谢谢你!ios如何autoresize uilabel的高度时添加文本或删除(和numberOfLines = 0)
NathanF
我有一个UILabel,显示用户的“生物”。我也让用户能够通过在用户点击时弹出uitextview来编辑这些文本,然后一旦用户完成从这个uitextview添加或删除文本,我说label.text = textview.text,因此它更新了生物标签的文字。
但是,我想要一种方法告诉标签根据添加或删除多少文本来修复它的高度。有没有办法做到这一点?先谢谢你!ios如何autoresize uilabel的高度时添加文本或删除(和numberOfLines = 0)
NathanF
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。
您可以使用[NSString的sizeWithFont:...],以衡量在标签中使用文本。
呼叫
[labelName sizeToFit];
设置在新文本之后。另外,还要确保你设置自动换行或字符换行,像这样:
[labelName setLineBreakMode:UILineBreakModeWordWrap];
或
[labelName setLineBreakMode:UILineBreakModeCharacterWrap];
让我知道如果您有任何其他问题!
这种方法 “sizeWithFont” 在iOS的7弃用这不是你可以使用下面的方法:
CGRect rect = [YourText boundingRectWithSize:CGSizeMake(labelWidth, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
NSLog(@"Height: %f",rect.size.height);
欲了解更多信息调查:Apple's Documentation
我得到[__NSCFConstantString pointSize]:在使用上面的代码后发送给实例的无法识别的选择器 – 2014-11-03 13:14:38
谢谢。这完全有效,但我的一个标准是保持相同的宽度。 – 2012-07-13 18:49:32