我想在一个元组打印这样如何改变只有可变颜色的印刷标签
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