web-dev-qa-db-ja.com

NSAttributedStringに改行を追加すると、誤った形式の属性付き文字列が返される

NSMutableAttributedStringNSAttributedStringを使用して、2つの異なるフォントサイズでラベルテキストを表示しています。私のアプローチは:

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"days" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];

これにより、フォントサイズ12に「2」、フォントサイズ8に「日」の属性付き文字列が返されます。

ただし、他のシナリオは2の後に改行を追加することです。次のコードを使用します。

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"\ndays" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];

今回の属性付き文字列は、全文に属性を適用します。フォントサイズ8で「2\ndays」の属性文字列を取得します。

23
user3404693

コードの下でこれを試してください、それはうまくいきます:-

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"\ndays" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];
self.lbl.numberOfLines = 0;
[self.lbl setAttributedText:muAtrStr];

注:-また、任意の行数を許可するには、numberOfLinesを0に設定します

39
Hussain Shabbir

これはSwiftで動作します:

let attributedText = NSAttributedString(string: "Happy \nDays")
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.attributedText = attributedText
9
primulaveris