我需要一組屬性文本。我需要每個元素的顏色根據其在陣列中的位置而改變(這將通過HSV來實現,因爲色調值將與位置相關)。該數組根據用戶輸入而有所不同,我不知道如何編寫它以便自動更改顏色。我把用戶的輸入分成了一個數組,那麼我怎樣才能將每個單詞轉換爲屬性文本?我完全不知道如何做到這一點,所以提前感謝您的幫助。如何製作屬性文本數組
-1
A
回答
1
您可以通過使用enumerate
和map
更加簡潔做到這一點:
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
。您應該根據自己的喜好調整飽和度和亮度。
輸出到UILabel
會是什麼樣子:
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)
}
}
相關問題
- 1. 如何爲UILabel的文本屬性製作替代名稱?
- 2. 如何製作具有屬性的JavaScript數組?
- 3. 如何從屬性文件中讀取字節數組作爲屬性
- 4. 如何將數組控制器綁定到NSDocument數組屬性?
- 5. 如何從shell腳本更新屬性文件中的數組?
- 6. Sitecore組件屬性將文本作爲文本呈現
- 7. PHP:數組作爲屬性
- 8. 數組作爲類屬性?
- 9. 如何從一個文本文件製作一個數組
- 10. 如何將TextBlock的文本屬性綁定到文本框的文本屬性
- 11. 彈簧複製屬性如何工作?
- 12. VBA OOP如何製作子屬性
- 13. 如何製作自定義組件屬性?
- 14. HTML文本屬性參數
- 15. 從文本類型製作數組
- 16. 核心數據數組作爲屬性
- 17. 如何製作多文本文本?
- 18. 如何製作RichTextBox文本?
- 19. 如何製作NSStrings數組?
- 20. 如何對齊Asp面板的分組文本屬性
- 21. 從代理屬性複製數組
- 22. Python xmltodict強制數組的屬性
- 23. 如何在擴展類後擴展類數組/屬性類的數組屬性?
- 24. XSLT 1.0將屬性值複製爲文本並刪除屬性
- 25. 如何定製的android AlertDialog文本屬性
- 26. 使用XML Schema如何定義屬性並限制文本?
- 27. 如何強制Automapper覆蓋數組屬性?
- 28. 如何綁定文本框和屬性?
- 29. 如何覆蓋TextBox文本屬性
- 30. 製作數組副本
這將幫助,如果你能更具體。也許提供一些你已經嘗試過的代碼。 – Zaz