Ios 如何使用自动布局正确计算标签大小
我知道也有类似的话题,但不幸的是他们的解决方案并没有像我想要的那样有效。我有一个标签,有特定的字体,左边的约束等于16,右边的约束也等于16。因此,为了计算预期的文本高度,我使用了以下方法:Ios 如何使用自动布局正确计算标签大小,ios,objective-c,autolayout,Ios,Objective C,Autolayout,我知道也有类似的话题,但不幸的是他们的解决方案并没有像我想要的那样有效。我有一个标签,有特定的字体,左边的约束等于16,右边的约束也等于16。因此,为了计算预期的文本高度,我使用了以下方法: CGSize labelSize = [[strMod fineHtmlFromString:mdl.content] sizeWithFont:self.contentLabel.font
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(约束缩进)。屏幕宽度定义为#定义屏幕宽度[[UIScreen mainScreen]界限].size.WIDTH
不幸的是,按照这个逻辑,我得到了我想要的更低的高度,所以我不得不将32增加到40。有没有一种方法可以通过布局动态精确计算标签高度?用标签字体试试
CGRect textRect = [text boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:FONT}
context:nil];
CGSize size = textRect.size;
self.heightFullSizeLabel = size.height;
用你的标签字体试试这个
CGRect textRect = [text boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:FONT}
context:nil];
CGSize size = textRect.size;
self.heightFullSizeLabel = size.height;
了解文本容器大小的正确方法是使用
-sizeToFit
或-sizeThatFits:(CGSize)size
您正在使用的视图只询问文本占用的区域,但它不考虑填充或其他可应用的与视图相关的内容。
如果使用每侧都包含大量填充的UItexView,您可以看到计算上的巨大差异了解文本容器大小的正确方法是使用
-sizeToFit
或-sizeThatFits:(CGSize)size
您正在使用的视图只询问文本占用的区域,但它不考虑填充或其他可应用的与视图相关的内容。
如果使用两边都有大量填充的UItexView,您可以看到计算结果的巨大差异为什么要计算它的高度?为什么要计算主卷轴的最终高度?为什么要计算它的高度?计算主卷轴的最终高度。谢谢,如果您更正我的代码片段,会很好,您能这么做吗?没有那么难,只需将文本添加到标签send sizeToFit或sizeThatFits,然后读取标签的边界,然后设置self.heightFullSizeLabel。您的意思是我应该只添加[label sizeToFit];在我声明之后?首先你需要传递文本,稍后sizeToFit我尝试传递,但它给了我错误的高度(20)。[self.contentLabel sizeToFit];NSLog(@“height..%f”,self.contentLabel.frame.size.height);。我想这是因为我想在自动布局过程完成之前计算高度。如果你能更正我的代码片段,那就太好了,你会很好吗?没那么难,只需将文本添加到标签中发送sizeToFit或sizeThatFits,然后读取标签的边界,并设置self.heightFullSizeLabel。您的意思是我应该只添加[label sizeToFit];在我声明之后?首先你需要传递文本,稍后sizeToFit我尝试传递,但它给了我错误的高度(20)。[self.contentLabel sizeToFit];NSLog(@“height..%f”,self.contentLabel.frame.size.height);。我想这是因为我想在自动布局过程完成之前计算高度