Swift 如何创建属性文本数组

Swift 如何创建属性文本数组,swift,Swift,我需要一个属性文本数组。我需要每个元素的颜色根据其在数组中的位置而改变(这将通过HSV实现,因为色调值将与位置相关)。数组根据用户输入的不同而不同,我不知道如何编写它,以便它自动更改颜色。我将用户的输入拆分为一个数组,那么如何将每个单词转换为属性文本呢?我完全不知道如何执行此操作,因此提前感谢您的帮助。您可以使用NSForegroundColorAttributeName更改NSAttribute字符串的颜色。我在下面提供了一个创建 64种不同的颜色 func colorUsingHSV( in

我需要一个属性文本数组。我需要每个元素的颜色根据其在数组中的位置而改变(这将通过HSV实现,因为色调值将与位置相关)。数组根据用户输入的不同而不同,我不知道如何编写它,以便它自动更改颜色。我将用户的输入拆分为一个数组,那么如何将每个单词转换为属性文本呢?我完全不知道如何执行此操作,因此提前感谢您的帮助。

您可以使用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)
  }
}

您可以使用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
的内容如下:


如果你能更具体一点,那会有帮助的。也许可以提供一些您尝试过的代码。如果您可以更具体一些,这会有所帮助。也许提供一些您尝试过的代码。