我想仅为像这样的元组打印中的变量更改颜色
result.text = ("\(var1) candy " + " of: \(var2) blablabla")
现在,我怎样才能改变" var1"的颜色?来自检查员的" var2",我为标签设置了红色,但它不可能只为变量改变颜色。
非常感谢
答案 0 :(得分:0)
你要做的是为每种颜色创建一个属性字符串(让我们说蓝色和黄色):
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)
<强>更新强>
因此,在您的情况下,由于您要为结果字符串的两个不同部分着色,因此您需要使用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字符串打印。