0
假設我有一個覆蓋應用程序整個窗口的UILabel
。在這個標籤中顯示不同長度的隨機文本。是否可以根據文本長度更改文本字體大小?根據字符串長度更改UILabel中的字體大小
假設我有一個覆蓋應用程序整個窗口的UILabel
。在這個標籤中顯示不同長度的隨機文本。是否可以根據文本長度更改文本字體大小?根據字符串長度更改UILabel中的字體大小
是,的UILabel可以爲你做的,只是做:
theLabel.adjustsFontSizeToFitWidth = YES;
theLabel.minimumFontSize = MIN_FONT_SIZE;
注意這個(從文件):
只有當numberOfLines屬性設置 此屬性是有效的爲1.
我在一個點創建了一個類別方法。你基本上餵它一個矩形,它會返回一個適合的字體。也許你可以從下面的例子原油蒐集的東西:
- (UIFont *)fontSizeForRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode minFontSize:(CGFloat)minFontSize
{
CGFloat fontSize = [font pointSize];
UIFont *tempFont = [UIFont fontWithName:[font fontName] size:[font pointSize]];
CGFloat acceptableFontSize = fontSize;
while (fontSize > minFontSize)
{
UIFont *testFont = [UIFont fontWithName:[tempFont fontName] size:fontSize];
CGSize sizeWithTestFont = [self sizeWithFont:testFont constrainedToSize:CGSizeMake(rect.size.width, 99999.0) lineBreakMode:lineBreakMode];
if (sizeWithTestFont.height > rect.size.height)
fontSize -= 1.0f; //Shrink the font size by a point
else
{
//Fits. Use it.
acceptableFontSize = fontSize;
break;
}
}
return [UIFont fontWithName:[font fontName] size:acceptableFontSize];
}
我加 [qLabel setNumberOfLines:1]; [qLabel setAdjustsFontSizeToFitWidth:YES]; [qLabel setMinimumFontSize:15]; to viewDidLoad,但文本顯示在最後的單行上。我想念什麼? – OhDoh 2012-03-07 19:19:59
然後文本的最小字體大小...嘗試降低最小值。 – fbernardo 2012-03-07 19:23:21
我設置了[qLabel setNumberOfLines:0],它的確有竅門。謝謝 ! – OhDoh 2012-03-07 19:27:32