回答:
\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:
リファレンス、廃止されたsizeWithFontの置換:iOS 7で?
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);
Interface Builderの小さなボックスに入力するときにoption-returnを使用して、改行(\ n)を挿入します。Interface BuilderのLabel属性で、#Lines = 0に設定します。
ラベルを選択し、上記の画像のようにLinesプロパティを0に変更し、文字列で改行するために\ nを使用します。
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
、文字列内の解析されていない部分\n
を、ハードコードされた解析済みの部分に置き換える必要がありますNSString
。
これが私のその他のラベル設定です。
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が\n
XMLから読み取った文字列を解析しないことを選択したのか分かりませんか?
お役に立てれば。
\n
Parse.comから文字列を取得するときに解析しません(他のAPIから文字列を取得するときにも発生すると思います)
インターフェイスビルダーでは、Ctrl+ Enterを使用して/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"
}
このようにしてください
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;
// 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];
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;
私の場合も\ n機能していませんでした。行数を0にして問題を修正し、たとえばHello \ n World iの代わりに新しい行自体でテキストをコピーして貼り付けました
こんにちは
世界
インターフェースビルダーで。
xCode 11、Swift 5では問題なく\n
動作します。以下のコードを試してください。
textlabel.numberOfLines = 0
textlabel.text = "This is line one \n This is line two \n This is line three"
textLabel.text = @"\nAAAAA\nBBBBB\nCCCCC";
textLabel.numberOfLines = 3; \\As you want - AAAAA\nBBBBB\nCCCCC
textLabel.lineBreakMode = UILineBreakModeWordWrap;
NSLog(@"The textLabel text is - %@",textLabel.text);
sizeWithFont:constrainedToSize:lineBreakMode:
ios8で問題が発生する可能性のある人やios8に切り替える人(この方法はios7で非推奨)については、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);
特にautolayoutを使用している場合は、ラベルフレームのサイズを変更するのは間違っているようです。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;
UILableプロパティをPlainからAttributedに設定した場合、UILabelの高さと幅がテキストを表示したい画面領域に合うように設定されるため、UILabelは複数の段落に関係なく複数行のテキストを保持します。
私は同じ問題に直面しました、そしてここに、私が問題をどのように解決したかがあります。これが誰かのために役立つことを願っています。
// Swift 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;
UILabel
iOSにorigin
norsize
プロパティはありませんか?それはおそらくlabel.frame.origin.x
等であるはずです