boundingRectWithSize 指定寬度,計算高度。
NSString *text = @"收到翻到了師傅的說法,擴大說法打三等獎撒大聲但是,俯瞰風(fēng)景阿薩法上課地卡薩丁撒。";
// NSString *text = @"11111111111111111111111111111111111111111111111111111111111111111";
UIFont *font = [UIFont systemFontOfSize:16];
NSAttributedString *attriText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];
CGRect rect = [attriText boundingRectWithSize:CGSizeMake(223, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
NSLog(@"%@", NSStringFromCGRect(rect));
CGRect rect1 = [text boundingRectWithSize:CGSizeMake(223, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: font} context:nil];
NSLog(@"%@", NSStringFromCGRect(rect1));
UILabel *contentLabel = [[UILabel alloc] initWithFrame:CGRectZero];
contentLabel.font = font;
contentLabel.text = text;
contentLabel.numberOfLines = 0;
contentLabel.textAlignment = NSTextAlignmentLeft;
CGSize sizeToFit = [contentLabel sizeThatFits:CGSizeMake(223, MAXFLOAT)];
NSLog(@"%@", NSStringFromCGSize(sizeToFit));
第一個打印:
2022-08-22 23:21:40.067382+0800 PodDemo[17825:431803] {{0, 0}, {212.15999999999997, 76.375}}
2022-08-22 23:21:40.067693+0800 PodDemo[17825:431803] {{0, 0}, {212.15999999999997, 76.375}}
2022-08-22 23:21:40.068116+0800 PodDemo[17825:431803] {212.33333333333334, 76.666666666666671}
第二個打?。?/p>
2022-08-22 23:24:34.479876+0800 PodDemo[17892:434661] {{0, 0}, {220.390625, 57.28125}}
2022-08-22 23:24:34.480291+0800 PodDemo[17892:434661] {{0, 0}, {220.390625, 57.28125}}
2022-08-22 23:24:34.480799+0800 PodDemo[17892:434661] {220.66666666666666, 57.333333333333336}
計算出來的矩形是個緊湊的矩形。并且還可以發(fā)現(xiàn)即使文本發(fā)生換行,它的寬度也不會等于指定的寬度,只會小于指定寬度,有時候差指定寬度10-20個pt,在UI上顯示會有瑕疵,貌似沒有好的解決辦法,因為即使等于指定寬度,但是因為剩余的空間放不下一個字符還是會換行空出。