2016-08-05 9 views
-1

属性付きテキストの配列が必要です。配列内の位置に応じて各要素の色を変更する必要があります(色相値が位置と相関するため、これはHSVによって実現されます)。配列はユーザ​​ーの入力によって異なりますが、色を自動的に変更するように書き込む方法はわかりません。ユーザーの入力が配列に分割されているので、どのように各単語を属性付きテキストに変換するのですか?私はこれをどうやって行うのか全く分からないので、事前に助けてくれてありがとう。属性付きテキストの配列を作成する方法

+0

UILabel

出力は次のようになります。あなたが試したコードを提供しているかもしれません。 – Zaz

答えて

1

あなたはenumeratemapを使用することにより、より簡潔にこれを行うことができます。

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)]) 
} 

あなたはUIColor(hue: CGFloat(index)/CGFloat(strings.count), saturation: 0.5, brightness: 0.5, alpha: 1.0)のテキストの色とNSAttributedStringに、アレイ内のすべての元の要素をマッピングしています。彩度と明るさを好みに合わせて調整する必要があります。あなたはより具体的にすることができればそれが役立つだろう

enter image description here

0

NSForegroundColorAttributeNameを使用すると、NSAttributedStringの色を変更できます。私は 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) 
    } 
} 
関連する問題