1. ホーム
  2. ios

[解決済み] UILabelの実際の行数を知るには?

2023-06-30 14:37:53

質問

どのようにすれば 実際の の行数を求めることができます。 UILabel で初期化した後 textfont ? を設定しました。 numberOfLines プロパティに 0 と設定すれば、必要な行数だけ展開されます。しかし、最終的に何行になったかは text ?

似たような質問を見つけましたが、どれも簡潔な答えを示していないようです。 boundingRectWithSize または sizeWithFont ,...

どのように解決するのですか?

まずUILabelにテキストを設定します。

最初のオプション:

まず、フォントに応じたテキストの高さを計算します。

NSInteger lineCount = 0;
CGSize labelSize = (CGSize){yourLabel.frame.size.width, MAXFLOAT};
CGRect requiredSize = [self boundingRectWithSize:labelSize  options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: yourLabel.font} context:nil];

ここで行数を計算します。

int charSize = lroundf(yourLabel.font.lineHeight);
int rHeight = lroundf(requiredSize.height);
lineCount = rHeight/charSize;
NSLog(@"No of lines: %i",lineCount);

第二の選択肢:

 NSInteger lineCount = 0;
 CGSize textSize = CGSizeMake(yourLabel.frame.size.width, MAXFLOAT);
 int rHeight = lroundf([yourLabel sizeThatFits:textSize].height);
 int charSize = lroundf(yourLabel.font.lineHeight);
 lineCount = rHeight/charSize;
 NSLog(@"No of lines: %i",lineCount);