UILabelに改行を追加するにはどうすればいいですか? 質問する

UILabelに改行を追加するにはどうすればいいですか? 質問する

次のような文字列があることを確認してみましょう:

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

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

ああ
ああ
ああああ

UILabel では認識されないと思いますが\n、UILabel がそこで改行を作成する必要があることを認識できるように、NSString 内に入れることができるものはありますか?

ベストアンサー1

\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);

おすすめ記事