2014-03-27 18 views
18

我使用NSMutableAttributedStringNSAttributedString以兩種不同的字體大小顯示標籤文本。我的做法是:用換行符附加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和「天」,在字體大小8

但是「2」,另一種情況是後添加一個換行符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

+0

請指導我,如果有更好的方法做要緊的。 – user3404693

+0

也可以使用' - (void)addAttribute:(NSString *)名稱值:(id)值範圍:(NSRange)範圍'屬性字符串的方法將屬性設置爲屬性字符串的不同部分。並將標籤的'setLineBreakMode'設置爲'NSLineBreakByWordWrapping'。 – Akhilrajtr

+0

對於那些像我一樣卡住的人,請設置yourLabel.numberOfLines = 0;在代碼中。 – Borzh

回答

32

試試這個下面的代碼,它工作正常: -

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允許任何數量的線

+0

但是在UILabel中,它以相同的字體大小i-e 8顯示2和天。我想以12字體大小和8字體大小的天顯示2。 – user3404693

+0

僅用於「天」文本。 12字體大小是「2」字符串的默認字體。當我在字符串中不使用\ n時完美工作。 – user3404693

+0

對不起,它也沒有工作...可能適用於文本視圖,不適用於uilabel。 – user3404693

2

此作品在斯威夫特:

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