Ios 使用换行符追加NSAttributedString将返回格式错误的属性字符串

Ios 使用换行符追加NSAttributedString将返回格式错误的属性字符串,ios,objective-c,nsattributedstring,Ios,Objective C,Nsattributedstring,我正在使用NSMutableAttributedString和NSAttributedString以两种不同的字体大小显示标签文本。我的做法是: NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"]; NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"days" attr

我正在使用
NSMutableAttributedString
NSAttributedString
以两种不同的字体大小显示标签文本。我的做法是:

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];

此时间属性字符串将属性应用于全文。我得到一个字号为“2\ndays”的属性字符串,字号为8。

试试下面的代码,效果很好:-

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以允许任何行数

这在Swift中起作用:

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

如果有更好的方法来完成所需操作,请指导我。您也可以使用属性字符串的
-(void)addAttribute:(NSString*)name value:(id)value range:(NSRange)range
方法将属性设置为属性字符串的不同部分。然后将标签的
设置LineBreakMode
NSLineBreakByWordWrapping
。对于像我一样被卡住的人,设置标签。numberOfLines=0;在代码中。但在UILabel中,它以相同的字体大小i-e 8显示2和天。我想显示12号字体的2天和8号字体的天。只显示“天”文本。“2”字符串的默认字体大小为12。当我不在字符串中使用\n时工作正常。对不起,它也不工作。。。可能适用于文本视图,而不适用于uilabel。是的,uilabel也会以相同的字体显示两个字符串,即2天和2天,无更改使用iOS7.1并按照您的描述设置属性文本。