iOS版。方法adjustsFontSizeToFitWidth无法正常工作

时间:2011-11-03 07:06:39

标签: ios text fonts size uilabel

我需要用一些文字填写一个矩形。 rect的大小是固定的。

我使用以下功能:

- (void)drawText:(NSString *)text onView:(UIView *)view inRect:(CGRect)rect
{
    UILabel *lbl = [[UILabel alloc] initWithFrame:rect];
    lbl.minimumFontSize = 1;
    lbl.font = [UIFont systemFontOfSize:30];
    [lbl setText:text];
    lbl.adjustsFontSizeToFitWidth = YES;
    [view addSubview:lbl];
    [lbl release];
}

然后我写了类似的东西:

[self drawText:@"Asdfghjkl;" onView:view inRect:CGRectMake(45, 40, 85, 13)];
[self drawText:@"qwertyui" onView:view inRect:CGRectMake(173, 31, 126, 22)];

我得到了剪切的文字。我的错误在哪里?

2 个答案:

答案 0 :(得分:2)

正如Gargolev所说,它将调整为适合宽度

因此,您应该选择正确的fontSize以适合您提供的高度。

要在没有事先了解您将要使用的字体的情况下在运行时执行此操作,一个简单的解决方案将是:

UILabel *label = [[UILabel alloc] initWithFrame:myView.bounds];
label.font = [UIFont fontWithName:@"Helvetica" size:1.f];
float fontAspectFactor = 1.f/label.font.lineHeight;
label.font = [UIFont fontWithName:@"Helvetica" size:myView.height*fontAspectFactor];
[myView addSubview:label];

答案 1 :(得分:0)

我认为主要的问题是某些文字只适合宽度,但它必须适合宽度和高度。 所以对我来说最快的解决方案是制作一个更大的透明UILabel并使用alignment

将文本放入其中