NSAttributedString の boundingRectWithSize が間違ったサイズを返す 質問する

NSAttributedString の boundingRectWithSize が間違ったサイズを返す 質問する

属性付き文字列の矩形を取得しようとしていますが、boundingRectWithSize 呼び出しは渡したサイズを考慮せず、大きな高さではなく 1 行の高さの矩形を返します (長い文字列です)。以下のコードのように、高さに非常に大きな値と 0 を渡して実験しましたが、返される矩形は常に同じです。

CGRect paragraphRect = [attributedText boundingRectWithSize:CGSizeMake(300,0.0)
  options:NSStringDrawingUsesDeviceMetrics
  context:nil];

これは壊れているのでしょうか、それとも折り返されたテキストの四角形を返すために何か他の操作を行う必要があるのでしょうか?

ベストアンサー1

正しいオプションを指定していないようです。ラベルをラッピングする場合は、少なくとも以下を指定してください。

CGRect paragraphRect =
  [attributedText boundingRectWithSize:CGSizeMake(300.f, CGFLOAT_MAX)
  options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
  context:nil];

注意: 元のテキストの幅が 300.f 未満の場合、行の折り返しは行われません。そのため、境界サイズが正しいことを確認してください。そうでない場合は、間違った結果が返されます。

おすすめ記事