2016-08-26 73 views
1

我嘗試爲我的應用創建夜晚/日期選項。我有一個文本,如"<font color="#aa2c2c">Red text</font>then back to normal "。 所以我需要紅色保持紅色,只改變無歸屬的顏色。Attributed text swift如何更改未歸屬文本的顏色

這是我嘗試:

text.enumerateAttributesInRange(NSRange(0..<text.length), options: []) { (attributes, range, _) -> Void in 
     for (attribute, object) in attributes { 
      NSLog("attr \(attribute) object \(object)")     
      } 
     } 
    } 

因此,日誌顯示我的東西,如 「ATTR NSColor對象UIDeviceRGBColorSpace 0 0 0 1」 或 「ATTR NSStrokeColor對象UIDeviceRGBColorSpace 0 0 0 1」。這似乎是我需要改變爲白色的黑色文本。

所以我把這個循環:

 if object.name!.containsString("0 0 0 1"){ 
      text.setAttributes(NSForegroundColorAttributeName, value: UIColor.whiteColor() , range: range) 
     } 

我不知道這是否是最好的決定,但我得到的錯誤:在調用額外的參數「價值」。 這有什麼問題,以及只有用非替代文字替換顏色的最佳方法是什麼?

+0

有作爲'NSMutableAttributeString setAttributes沒有這樣的方法:值:範圍:'。有'setAttributes:range:'或'addAttribute:value:range:'或'addAttributes:range:'。 – rmaddy

+1

不要使用對象的描述進行比較,值應該是UIColor,只需比較它即可。 – Larme

回答

1
let text = "We tried to make this app as most intuitive as possible for you. If you have any questions don't hesitate to ask us. For a detailed manual just click here." 
let linkTextWithColor = "click here" 

let range = (text as NSString).rangeOfString(linkTextWithColor) 

let attributedString = NSMutableAttributedString(string:text) 
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor() , range: range) 

self.helpText.attributedText = attributedString 

myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:2,length:4))