Swift 如何创建属性文本数组
我需要一个属性文本数组。我需要每个元素的颜色根据其在数组中的位置而改变(这将通过HSV实现,因为色调值将与位置相关)。数组根据用户输入的不同而不同,我不知道如何编写它,以便它自动更改颜色。我将用户的输入拆分为一个数组,那么如何将每个单词转换为属性文本呢?我完全不知道如何执行此操作,因此提前感谢您的帮助。您可以使用NSForegroundColorAttributeName更改NSAttribute字符串的颜色。我在下面提供了一个创建 64种不同的颜色Swift 如何创建属性文本数组,swift,Swift,我需要一个属性文本数组。我需要每个元素的颜色根据其在数组中的位置而改变(这将通过HSV实现,因为色调值将与位置相关)。数组根据用户输入的不同而不同,我不知道如何编写它,以便它自动更改颜色。我将用户的输入拆分为一个数组,那么如何将每个单词转换为属性文本呢?我完全不知道如何执行此操作,因此提前感谢您的帮助。您可以使用NSForegroundColorAttributeName更改NSAttribute字符串的颜色。我在下面提供了一个创建 64种不同的颜色 func colorUsingHSV( in
func colorUsingHSV( index : Int, total : Int) -> UIColor
{
return UIColor(hue: CGFloat((CGFloat(index)/CGFloat(total))), saturation: 1.0, brightness: 1.0, alpha: 1.0)
}
func generateAttributeText()
{
var attrStrings = [NSAttributedString]()
for i in 1...64
{
let attrString: NSMutableAttributedString = NSMutableAttributedString(string: "Text")
attrString.addAttribute(NSForegroundColorAttributeName, value: colorUsingHSV(i,total: 64), range: NSMakeRange(0, attrString.length))
attrStrings.append(attrString)
}
}
您可以使用NSForegroundColorAttributeName更改NSAttribute字符串的颜色。我在下面提供了一个创建 64种不同的颜色
func colorUsingHSV( index : Int, total : Int) -> UIColor
{
return UIColor(hue: CGFloat((CGFloat(index)/CGFloat(total))), saturation: 1.0, brightness: 1.0, alpha: 1.0)
}
func generateAttributeText()
{
var attrStrings = [NSAttributedString]()
for i in 1...64
{
let attrString: NSMutableAttributedString = NSMutableAttributedString(string: "Text")
attrString.addAttribute(NSForegroundColorAttributeName, value: colorUsingHSV(i,total: 64), range: NSMakeRange(0, attrString.length))
attrStrings.append(attrString)
}
}
通过使用
枚举
和映射
,您可以更简洁地执行此操作:
let strings = ["The", "Cat", "In", "The", "Hat"]
let attribStrings = strings.enumerate().map { index, element in
return NSAttributedString(string: element, attributes: [NSForegroundColorAttributeName:UIColor(hue: CGFloat(index)/CGFloat(strings.count), saturation: 0.5, brightness: 0.5, alpha: 1.0)])
}
您正在将数组中的每个原始元素映射到一个NSAttributedString
,文本颜色为UIColor(色调:CGFloat(索引)/CGFloat(strings.count),饱和度:0.5,亮度:0.5,alpha:1.0)
。你应该根据自己的喜好调整饱和度和亮度
输出到UILabel
的内容如下:
您可以使用
枚举
和映射
更简洁地执行此操作:
let strings = ["The", "Cat", "In", "The", "Hat"]
let attribStrings = strings.enumerate().map { index, element in
return NSAttributedString(string: element, attributes: [NSForegroundColorAttributeName:UIColor(hue: CGFloat(index)/CGFloat(strings.count), saturation: 0.5, brightness: 0.5, alpha: 1.0)])
}
您正在将数组中的每个原始元素映射到一个NSAttributedString
,文本颜色为UIColor(色调:CGFloat(索引)/CGFloat(strings.count),饱和度:0.5,亮度:0.5,alpha:1.0)
。你应该根据自己的喜好调整饱和度和亮度
输出到UILabel
的内容如下:
如果你能更具体一点,那会有帮助的。也许可以提供一些您尝试过的代码。如果您可以更具体一些,这会有所帮助。也许提供一些您尝试过的代码。