このような文字列があることを確認してください。
NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";
UILabelがこのようなメッセージを表示するようにするにはどうすればよいですか
AAAAA
BBBBB
CCCCC
\n
がUILabelによって認識されているとは思わないので、USSが改行を作成する必要があることをUILabelが認識できるようにするためにNSStringの内部に配置できるものはありますか?
XMLファイルから文字列を読み込む場合、この文字列の改行\n
はUILabel
のテキストでは機能しません。 \n
は改行に解析されません。
この問題を解決するためのちょっとしたコツがあります。
// correct next line \n in string from XML file
NSString *myNewLineStr = @"\n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"\\n" withString:myNewLineStr];
myLabel.text = myLabelText;
そのため、文字列内の未解析の\n
部分を、ハードコードされたNSString
内の解析済みの\n
で置き換える必要があります。
これが私の他のラベル設定です。
myLabel.numberOfLines = 0;
myLabel.backgroundColor = [UIColor lightGrayColor];
myLabel.textColor = [UIColor redColor];
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];
myLabel.textAlignment = UITextAlignmentCenter;
最も重要なのは、numberOfLines
を0
に設定することです(=ラベルの行数は無制限)。
なぜAppleがXMLから読み込まれた文字列の\n
を解析しないことを選んだのかわかりませんか。
お役に立てれば。
インターフェースビルダーでは、あなたが使用することができます Ctrl + Enter 希望の位置に/n
を挿入します。このようにして、次のような状況を実現できます。
ああ
aaaaaaa
numberOfLines
プロパティにUILabel
プロパティを設定する必要があります。デフォルトは1です。これをに設定すると、すべての制限が削除されます。
\n
ではなく/n
(円記号)であることに注意してください。
Swift 2.2では、> iOS 8
StoryboardのAttribute Inspectorの下でLines = 0を設定し、参照アウトレットをラベルにリンクしました。その後、このようにコントローラで使用します。
@IBOutlet weak var listLabel: UILabel!
override func viewDidLoad() {
...
listLabel.text = "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nLine 8"
}
// numberOfLinesをゼロに設定することを忘れないでください
UILabel* locationTitle = [[UILabel alloc] initWithFrame:CGRectMake(5, 30, 230, 40)];
locationTitle.font = [UIFont systemFontOfSize:13.0];
locationTitle.numberOfLines = 0;
locationTitle.text = [NSString stringWithFormat:@"Eaton industries pvt. Ltd \nUK Apr 12"];
[cell addSubview:locationTitle];
こんな感じで
NSString * strCheck = @"A\nB";
strCheck = [strCheck stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"]; //This is to prevent for fetching string from plist or data structure
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
label.text = strCheck;
UILabel
を使用する場合は、デフォルト設定が1行であることを覚えておく必要があります。したがって、追加するブレークの数(\n
または\r
)は関係ありません。そのため、2行以上に設定する必要があります。さらに行を追加することを許可しました。
1つの選択肢は、実際には複数行用のUITextView
を使用することです。
これはUILabelのXCode属性セクションで簡単に実現できます。スクリーンショットを参照してください。
Xcode 6では、ワードラップを使うときは文字列の中でも\ nを使うことができます。それが動作します。だから、例えば:
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, screenRect.size.width, 50)];
label.textAlignment = NSTextAlignmentCenter;
label.text = @"This will be on the first line\nfollowed by a line under it.";
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
label.numberOfLines = 0;
を使うだけ
私の場合も\ nうまく動かなかった、私は行の数を0に保つことによって問題を修正し、コピーして、例えばHello\n World iの代わりに新しい行自体で貼り付けた。
こんにちは
世界
インターフェイスビルダーで。
textLabel.text = @"\nAAAAA\nBBBBB\nCCCCC";
textLabel.numberOfLines = 3; \\As you want - AAAAA\nBBBBB\nCCCCC
textLabel.lineBreakMode = UILineBreakModeWordWrap;
NSLog(@"The textLabel text is - %@",textLabel.text);
NSCharacterSet *charSet = NSCharacterSet.newlineCharacterSet;
NSString *formatted = [[unformatted componentsSeparatedByCharactersInSet:charSet] componentsJoinedByString:@"\n"];
特に自動レイアウトを使用しているときにラベルフレームのサイズを変更するのは私にとっては間違っているようです。 appendFormatメソッドを使用する方が適切なようです。これが私の例です:
NSMutableString *list = [[NSMutableString alloc] init];
NSArray *textArray = @[@"AAAA", @"BBBB"];
for (NSString *string in textArray) {
[list appendFormat:@"%@\n", string.mutableCopy];
}
self.label.text = list;
self.label.numberOfLines = 0;
sizeWithFont:constrainedToSize:lineBreakMode:
で問題を抱えている人、またはios 8に切り替える人(ios 7ではこの方法は推奨されていません)のために、代わりにsizeToFit
を使用して身長を調整しました。
UILabel *label;
label.numberOfLines = 0;
// Setup label with desired settings
...
[label sizeToFit];
label.frame = CGRectMake(label.frame.Origin.x, // Or use any desired Origin
label.frame.Origin.y,
label.frame.size.width, // Or use any desired width
label.frame.size.height);
UILableプロパティをPlainからAttributedに設定すると、UILabelの高さと幅がテキストを表示する画面領域に合わせて設定されている段落数に関係なく、UILabelは複数行のテキストを保持します。
私は同じ問題に直面しました、そして、ここに、私がどのように問題を解決したかです。これが誰かに役立つことを願っています。
//スイフト2
lblMultiline.lineBreakMode = .ByWordWrapping // or use NSLineBreakMode.ByWordWrapping
lblMultiline.numberOfLines = 0
// Objective-C
lblMultiline.lineBreakMode = NSLineBreakByWordWrapping;
lblMultiline.numberOfLines = 0;
// C#(Xamarin.iOS)
lblMultiline.LineBreakMode = UILineBreakMode.WordWrap;
lblMultiline.Lines = 0;