2017-08-15 52 views
0

我想在一个元组打印这样如何改变只有可变颜色的印刷标签

result.text = ("\(var1) candy " + " of: \(var2) blablabla") 

现在改变颜色只为变量,我如何改变“VAR1”和“VAR2”的颜色,从检查员那里,我为标签设置了红色,但不可能仅为变量更改颜色。

非常感谢

+1

查看'NSAttributedString'。 – the4kman

+0

我尝试了,但这不是简单的方法,需要修改颜色的范围位置,我只需要设置不同颜色的var1和var2。 – luke

回答

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) 

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字符串打印。

+0

我尝试但不工作,在标签上打印第一个值,像这样10 {总是红色的颜色就像在检查员中设置的那样。我不明白。我直接在按钮操作中编写代码。我修改我的代码,但没有。不打印值 – luke

+0

调试区域 -144.00 { NSColor =“UIExtendedGrayColorSpace 1 1”; } 5.0 { NSColor =“UIExtendedGrayColorSpace 1 1”; } -------------- -144.00 5.0 – luke

+0

犯了一个小错误,检查我的更新 – murphguy