0

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

内森F

4

4 回答 4

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;

这将根据新文本调整标签(高度)的大小(同时考虑字体和换行模式)。

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

来源

于 2012-07-12T17:03:25.220 回答
4

称呼

[labelName sizeToFit];

设置新文本后。还要确保像这样设置自动换行或字符换行:

[labelName setLineBreakMode:UILineBreakModeWordWrap];

或者

[labelName setLineBreakMode:UILineBreakModeCharacterWrap];

如果您还有其他问题,请告诉我!

于 2012-07-12T17:12:53.987 回答
1

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

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

欲了解更多信息,请查看:Apple 的文档

于 2013-11-13T07:51:41.343 回答
0

您可以使用 [NSString sizeWithFont:...] 来测量用于标签的文本。

另请参阅:如何获取 NSString 的大小

于 2012-07-12T17:02:23.213 回答