2013-01-08 85 views
8

我想減少我的字符串的一部分的大小,並使用下面的代碼。我的輸出不正確。我只看到我的第一個字體屬性用於整個字符串,而不是指定的範圍。是否有可能使用NSAttributedString設置多個字體屬性

NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:title]; 
    NSInteger _stringLength=[descriptionText length]; 
    [attString addAttribute:NSFontAttributeName 
         value:[UIFont fontWithName:@"Gotham-Bold" size:20.0] 
         range:NSMakeRange(0, 10)]; 
    [attString addAttribute:NSFontAttributeName 
         value:[UIFont fontWithName:@"Helvetica-Bold" size:12.0] 
         range:NSMakeRange(11, _stringLength-1)]; 
    [self.description setAttributedText:attString]; 
+0

有你initting任何具體原因你的字符串有'title',但你是你唱'descriptionText'的長度? – 2013-01-15 06:40:51

+0

它們可以互換,但我應該使用其中一個。我將descriptionText傳遞給方法,本地方法變量是標題。 – propstm

回答

0

沒有什麼不對您的代碼。可能你正在嘗試使用不存在的字體名稱。您是否檢查字體實際上是否存在,例如由po或NSLog?

如果您記錄的屬性字符串是什麼輸出?

0

請看看本網站和視頻,你可能會得到一些有用的

Rich text

6

我也有過這個問題。對於第二種字體選擇,您需要將字符串長度的負數設置爲與起始位置相同。

[attString addAttribute:NSFontAttributeName 
        value:[UIFont fontWithName:@"Helvetica-Bold" size:12.0] 
        range:NSMakeRange(11, _stringLength-11)]; 

而不是:

[attString addAttribute:NSFontAttributeName 
        value:[UIFont fontWithName:@"Helvetica-Bold" size:12.0] 
        range:NSMakeRange(11, _stringLength-1)]; 
1

我的2美分;)斯威夫特3

func attributedTexts(text1: String, attribs1: [String : Any]?, text2: String, attribs2: [String : Any]?) { 

    let str = NSMutableAttributedString(string: text1, attributes: attribs1); 
    str.append(NSAttributedString(string: text2, attributes: attribs2)) 

    return str 
} 

用法:

let attr1 = [NSFontAttributeName: UIFont.boldSystemFont(ofSize: 24)] 
let attr2 = [NSFontAttributeName: UIFont.systemFont(ofSize: 16)] 
let attributedString = self.attributedTexts(text1: "First Text", attribs1: attr1, text2: "\nSecond Text", attribs2: attr2) 
相關問題