次のような文字列があることを確認してみましょう:
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);