我知道有类似的主题,但遗憾的是他们的解决方案不能按我的意愿运作。我有一个标签,具有特定字体,左侧的约束等于16,右侧也等于16。因此,为了计算预期的文本高度,我使用了这个:
CGSize labelSize = [[strMod fineHtmlFromString:mdl.content] sizeWithFont:self.contentLabel.font
constrainedToSize:CGSizeMake(SCREEN_WIDTH - 32, (FLT_MAX))
lineBreakMode:NSLineBreakByWordWrapping];
self.heightFullSizeLabel = labelSize.height;
32是一个数字,很容易计算为16 + 16(约束缩进)。 SCREEN_WIDTH定义为#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
不幸的是,根据这个逻辑,我得到的高度更低,所以我不得不将32位数增加到40位。有没有办法用布局动态精确计算标签高度?
答案 0 :(得分:1)
使用您的标签字体尝试此操作。
CGRect textRect = [text boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:FONT}
context:nil];
CGSize size = textRect.size;
self.heightFullSizeLabel = size.height;
答案 1 :(得分:1)
了解文本容器大小的正确方法是使用-sizeToFit
或-sizeThatFits:(CGSize)size
您正在使用的那个只询问文本占用的区域,但它没有考虑填充或其他可以应用的视图相关内容。
如果使用每边都包含大量填充的UItexView,您可以看到计算上的巨大差异