簡體   English   中英

是否可以使用NSAttributedString設置多個字體屬性

[英]Is it possible to set multiple font attributes using an 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];

我也遇到過這個問題。 對於第二個字體選擇,您需要將字符串長度的減號設置為與其開始的位置相同。

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

我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)

請看一下這個網站和視頻,你可能會得到一些有用的東西

豐富的文字

您的代碼沒有任何問題。 可能您正在嘗試使用不存在的字體名稱。 您是否檢查過字體確實存在,例如po或NSLog?

如果您記錄attributionString,輸出是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM