UILabel 不调整高度以适合文本

Posted

技术标签:

【中文标题】UILabel 不调整高度以适合文本【英文标题】:UILabel don't adjust in height to fit the text 【发布时间】:2014-11-28 06:03:12 【问题描述】:

我知道有很多关于 UILabel 的帖子,它的大小,但我无法找到我的问题的答案。

我有一些UILabels 的文字在 1 行,不再有,也不想要更多行,并且文字设置为最小字体比例以进行调整。在竖屏模式下,屏幕有足够的高度空间并且不会将我的 UILabel 高度缩放到临界点。

在横向模式下,我的身高很矮,UILabel 的高度非常小,文字在顶部和底部被剪切。

我已经测试了我读过的所有内容:

将换行符设置为剪辑模式

使用adjustsFontSizeToFitWidth = YES;

在任何情况下,文本只适合宽度,而不关心高度。

我应该使用一些丑陋的技巧来根据标签高度自己计算字体大小还是我错过了什么?

【问题讨论】:

贴出你的代码,看看有没有漏掉 一切都在界面生成器中,除非我尝试通过代码添加 adjustsFontSizeToFitWidth 行。我不能给你看任何代码。如果要重现它,请创建一个新项目,将 uilabel 放入其中,字体大小较大,最小比例为 0.1,并将高度比例设置为屏幕高度的 5% 或 10%。在这之后,玩一下屏幕旋转,你会遇到同样的问题。 【参考方案1】:
CGRect labelFrame = CGRectMake(22, 50, 280, 150);
UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame];
[myLabel setText:finalRecipe];
[myLabel setBackgroundColor: [UIColor lightGrayColor]];
[myLabel setNumberOfLines:0];

CGFloat fontSize = 0.0f;
labelFrame.size = [myLabel.text sizeWithFont:myLabel.font
                            minFontSize:myLabel.minimumFontSize
                         actualFontSize:&fontSize
                               forWidth:labelFrame.width
                        lineBreakMode:myLabel.lineBreakMode];

myLabel.frame = labelFrame;
[self.view addSubview:myLabel];

【讨论】:

以上是关于UILabel 不调整高度以适合文本的主要内容,如果未能解决你的问题,请参考以下文章

如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?

调整 UILabel 字体大小以适合文本

UILabel 动画调整大小副作用

如何根据标签可用的高度调整 UILabel 字体大小

UILabel - 自动调整大小标签以适合文本?

根据文本调整 UILabel 高度