需求:每行15個(gè)字弟灼,左右間距固定大小邑飒。根據(jù)寬度自動(dòng)適配字體大小:即屏幕越寬喊暖,字號(hào)越大;屏幕小辜王,則字號(hào)越小劈狐。
1.根據(jù)寬度計(jì)算字號(hào)方法
//根據(jù)不同屏幕寬度去適應(yīng)字號(hào)大小
- (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個(gè)字寬度調(diào)用,得出字號(hào)大小
CGFloat fontSize = [self calcuateFontSizeFromWidth:NSLocalizedString(@"onesentence_fifteenWord", nil)];
3.高度也需要計(jì)算呐馆,如果是固定高度肥缔,字號(hào)過(guò)大可能會(huì)導(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都需要自己實(shí)現(xiàn),Android都是系統(tǒng)屬性汹来,羨慕的不行续膳。
2.計(jì)算TextView的寬度和高度沒(méi)有那個(gè)方法準(zhǔn)確,只有在屏幕外寫(xiě)一個(gè)TextView用于計(jì)算收班,這樣也不改變需要展示TextView的text坟岔。
有任何問(wèn)題歡迎留言交流。