我想将颜色更改为字符串中的所有字符。但是我的代码只给出了字符串中的最后一个字符。我想在属性字符串中追加字符。我怎么能这样做?
我的代码:
func test(){
var str:String = "test string"
for i in 0...count(str)-1{
var test = str[advance(str.startIndex, i)]
var attrString = NSAttributedString(string: toString(test), attributes: [NSForegroundColorAttributeName: rainbowColors()])
label.attributedText = attrString
}
}
答案 0 :(得分:4)
在这种情况下,如果您希望每个角色具有相同的彩虹色,则不需要追加角色。您可以执行以下操作:
label.attributedText = NSAttributedString(string: str, attributes: [NSForegroundColorAttributeName: rainbowColors()])
如果要附加字符,则需要使用NSMutableAttributedString。它有一个名为append的方法。
鉴于您希望每个索引使用不同的颜色,请执行以下操作:
var str:String = "test string"
var attributedString = NSMutableAttributedString()
for (index, character) in enumerate(str) {
attributedString.appendAttributedString(NSAttributedString(string: String(character), attributes: [NSForegroundColorAttributeName: colorForIndex(index)]))
}
label.attributedText = attributedString
colorForIndex是您需要实现的功能,以获取该特定索引的彩虹色
func colorForIndex(index: Int) -> UIColor {
let color = // your function to get the color
return color
}
如果您需要帮助来实现该功能,请查看此问题iOS rainbow colors array