1. ホーム
  2. アイオス

[解決済み】UILabelに改行を追加するには?

2022-03-31 15:25:59

質問

例えば、次のような文字列があるとします。

NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";  

UILabelにこのようなメッセージを表示させるには、どうすればよいでしょうか。

AAAAA

BBBBB

CCCCC

私はそうは思いません。 \n はUILabelによって認識されるので、UILabelがそこで改行を作成しなければならないことを認識するために、NSStringの中に入れることができるものはありますか?

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

使用方法 \n を文字列の中で使っているのと同じです。

numberOfLinesに0を設定し、任意の行数を指定できるようにします。

label.numberOfLines = 0;

ラベルフレームを文字の大きさに合わせて更新するには sizeWithFont: . これをしないと、テキストが縦に中央寄せになったり、切れたりします。

UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
                          constrainedToSize:label.frame.size
                              lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);

更新情報 : 非推奨の代替品

sizeWithFont:constrainedToSize:lineBreakMode:

参考 iOS 7 で非推奨となった sizeWithFont: の代わり?

CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];

label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);