需求:每行15個字,左右間距固定大小。根據(jù)寬度自動適配字體大小:即屏幕越寬,字號越大;屏幕小,則字號越小。
1.根據(jù)寬度計算字號方法
//根據(jù)不同屏幕寬度去適應(yīng)字號大小
- (CGFloat)calcuateFontSizeFromWidth:(NSString *)text{
self.calculateTextView.frame = CGRectMake(0, -20, 0, 35.5);
self.calculateTextView.text = text;
CGFloat fontSize = 22;
CGFloat fixedWidth = MAXFLOAT;
CFTimeInterval startTimeInterval = CACurrentMediaTime();
while (fixedWidth>SCREEN_WIDTH-34*2) {
self.calculateTextView.font = [UIFont systemFontOfSize:fontSize];
fixedWidth = [self.calculateTextView sizeThatFits:CGSizeMake(MAXFLOAT, 50)].width;
fontSize = fontSize-0.5;
}
CMLogDebug(@"calcuateFontSizeFromWidth %.2f",CACurrentMediaTime() - startTimeInterval);
return MAX(fontSize, 0);
}
2.按每行15個字寬度調(diào)用,得出字號大小
CGFloat fontSize = [self calcuateFontSizeFromWidth:NSLocalizedString(@"onesentence_fifteenWord", nil)];
3.高度也需要計算,如果是固定高度,字號過大可能會導(dǎo)致字體顯示不全
- (CGFloat)calcuateLineHeight{
self.calculateTextView.frame = CGRectMake(0, -20, SCREEN_WIDTH-34*2, MAXFLOAT);
self.calculateTextView.font = [UIFont systemFontOfSize:self.fontSize];
self.calculateTextView.text = NSLocalizedString(@"onesentence_fifteenWord", nil);
CGFloat height = [self.calculateTextView sizeThatFits:CGSizeMake(SCREEN_WIDTH-34*2, MAXFLOAT)].height;
return height;
}
總結(jié):
1.iOS的TextView都需要自己實現(xiàn),Android都是系統(tǒng)屬性,羨慕的不行。
2.計算TextView的寬度和高度沒有那個方法準確,只有在屏幕外寫一個TextView用于計算,這樣也不改變需要展示TextView的text。
有任何問題歡迎留言交流。