2011-11-03 164 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];