我想在一個元組打印這樣如何改變只有可變顏色的印刷標籤
result.text = ("\(var1) candy " + " of: \(var2) blablabla")
現在改變顏色只爲變量,我如何改變「VAR1」和「VAR2」的顏色,從檢查員那裏,我爲標籤設置了紅色,但不可能僅爲變量更改顏色。
非常感謝
我想在一個元組打印這樣如何改變只有可變顏色的印刷標籤
result.text = ("\(var1) candy " + " of: \(var2) blablabla")
現在改變顏色只爲變量,我如何改變「VAR1」和「VAR2」的顏色,從檢查員那裏,我爲標籤設置了紅色,但不可能僅爲變量更改顏色。
非常感謝
,你所要做的就是創建爲每種顏色的屬性串(比方說,藍色和黃色):
let t : NSAttributedString = NSAttributedString(string: "Hi", attributes: [NSForegroundColorAttributeName : UIColor.blue])
let t2 : NSAttributedString = NSAttributedString(string: " There", attributes: [NSForegroundColorAttributeName : UIColor.yellow])
如果你想將它們連接在一起:
let final = NSMutableAttributedString(attributedString: t)
final.append(t2)
UPDATE
所以在你的情況下,因爲你想爲結果字符串的兩個不同部分着色,所以你需要使用NSRange方法。所以像這樣的方法:
func colorTheVariables(_ var1Value: String,_ var2Value: String) {
let middle = " candy of: ".characters.count
let value = "\(var1Value) candy of : \(var2Value)"
let text = NSMutableAttributedString(string: value)
let range1 = NSRange(location: 0, length: var1Value.characters.count)
let range2 = NSRange(location: range1.length + middle, length: var2Value.characters.count)
text.addAttribute(NSForegroundColorAttributeName, value: var1Color, range: range1)
text.addAttribute(NSForegroundColorAttributeName, value: var2Color, range: range2)
result.attributedText = text
}
應該給你你想要的VAR1和VAR 2.着色應用文本標籤的attributedText
,而不是文字是很重要的。打印result.text
應該給你的標籤的內容,但打印result.attributedText
會給你奇怪的nsAttributed字符串打印。
查看'NSAttributedString'。 – the4kman
我嘗試了,但這不是簡單的方法,需要修改顏色的範圍位置,我只需要設置不同顏色的var1和var2。 – luke