2017-08-15 45 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