我有一个UILabel,它的文本大小有属性
title.adjustsFontSizeToFitWidth = YES;
这使我无法使用标准方法来调整UILabel的大小。我在这里的另一篇文章上读到我应该使用这个函数
sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode
从这个答案:How to figure out the font size of a UILabel when -adjustsFontSizeToFitWidth is set to YES?
现在,我不知道如何使它工作..这是实际的代码
UIFont *font = [UIFont fontWithName:@"Marker Felt" size:200];
UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, width, 20.0)];
title.text = @"this is a long title that should be resized";
title.font = font;
title.numberOfLines = 1;
title.adjustsFontSizeToFitWidth = YES;
CGFloat pointSize = 0.0;
CGSize size = [title.text sizeWithFont:font
minFontSize:title.minimumFontSize
actualFontSize:&pointSize
forWidth:width
lineBreakMode:title.lineBreakMode];
title.frame = CGRectMake(title.frame.origin.x,
title.frame.origin.y,
size.width,
size.height);
UILabel的大小调整错误,好像字体大小仍然是200..有线索吗?谢谢!
6条答案
按热度按时间whitzsjs1#
我有一些代码你可以在我的github上使用,检查一下,这是UILabel的一个类别,你需要设置框架宽度,当你可以在UILabel上调整大小时,它会调整高度以适应内容,并返回标签末尾的y位置,这样你就可以调整出现在它后面的任何内容。
https://gist.github.com/1005520
5cg8jx4n2#
我建议把这个作为bug归档。
-sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
返回的大小具有正确的宽度,但高度不正确,不能说明实际的字体大小。UILabel
似乎也有这个bug。更改标签的大小以匹配-sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
返回的大小的字体中的文本的高度将错误地垂直定位标签中的文本。解决方法是计算正确的高度,并将标签上的字体更改为实际字体大小:
fgw7neuy3#
请尝试使用较小的fontSize创建字体。例如:
但要actualFontSize将link传递给CGFloat == 200。
更新日期:
试试这个:
ryhaxcpt4#
我认为你应该使用这段代码,我正在使用的标签上scrollview为一个大文本你也可以这样做
csbfibhn5#
你试过intrinsicContentSize吗?
lawou6xi6#
这个密码对我有用