2011-11-03 65 views
0

我需要用一些文本填充矩形。矩形的大小是固定的。iOS。方法adjustsFontSizeToFitWidth不能正常工作

我用下面的功能:

- (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)]; 

我也得到了板缺文字。我的错误在哪里?

回答

0

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

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];