如何存储和访问 'array' 个 NSAttributedString.Key.foregroundColor 个值
How to store and access an 'array' of NSAttributedString.Key.foregroundColor values
我有一个网格 UICollectionView
,在每个单元格中显示一个文本标签。虽然图中显示了每个单元格中的不同属性,但我无法弄清楚如何在 indexPath.item
.
处存储和访问特定的 NSAttributedString.Key.foregroundColor
值
对于文本,我有一个字符串值数组,我通过 cellForItemAt indexPath 中的 indexPath.item 调用它。但是我不知道如何创建等效的属性值数组。
型号:
let myText = ["Pos.1", "Main Verb", "Pos.2".....等
集合视图数据源:
func colletionView(_ collectionView.UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CVCell", for: indexPath as! CVCell
let text = myModel.myText[indexPath.item]
let myAttribute = [NSAttributedString.Key.foregroundColor: UIColor.blue]
let myAttributedText = NSAttributedString(string: text, attributes: myAttributes as [NSAttributedString.Key : Any])
cell.label.attributedText = myAttributedText
return cell
}
我试过创建 NSAttributedString 或 NSAttribtuedString.Key 的数组,但它从未编译。我该怎么做才能在 indexPath.item 处获得正确的值?或者这完全是错误的方法?
let cellColor = [
NSAttributedString.Key.foregroundColor: UIColor.blue
NSAttributedString.Key.foregroundColor: UIColor.red
...
最终,我希望将数据放在 plist 或 json 文件或核心数据中,但(我相信)仍然需要将数据加载到数组中(我相信)才能访问通过 indexPath.item.
我不是很有经验,所以我可能会遗漏一些非常基本的东西。
您必须创建一个数组来存储模型中的颜色,就像您为文本设置的那样
型号:
let myText = ["Pos.1", "Main Verb", "Pos.2".... etc
let myColors = [UIColor.blue, UIColor.red, UIColor.green.... etc
然后像这样访问它
...
let text = myModel.myText[indexPath.item]
let color = myModel.myColors[indexPath.item]
let myAttributes: [NSAttributedString.Key : Any] = [.foregroundColor: color]
let myAttributedText = NSAttributedString(string: text, attributes: myAttributes)
...
注意你发的不是数组而是Dictionary。
此外,如果您只是更改文本颜色,则不必使用 NSAttributedString
,您可以更改标签 textColor
属性
编辑:
根据@Larme 的建议,您还可以创建一个结构来保存模型中的数据,这样您就可以只有一个数组:
struct TextSettings {
let text: String
let color: UIColor
}
let myTextSettings = [TextSettings(text: "Pos.1", color: UIColor.blue),
TextSettings(text: "Main Verb", color: UIColor.red),
TextSettings(text: "Pos.2", color: UIColor.green), ...]
并在设置单元格时使用它
...
let settings = myModel.myTextSettings[indexPath.item]
let myAttributes: [NSAttributedString.Key : Any] = [.foregroundColor: settings.color]
let myAttributedText = NSAttributedString(string: settings.text, attributes: myAttributes)
...
我有一个网格 UICollectionView
,在每个单元格中显示一个文本标签。虽然图中显示了每个单元格中的不同属性,但我无法弄清楚如何在 indexPath.item
.
NSAttributedString.Key.foregroundColor
值
对于文本,我有一个字符串值数组,我通过 cellForItemAt indexPath 中的 indexPath.item 调用它。但是我不知道如何创建等效的属性值数组。
型号: let myText = ["Pos.1", "Main Verb", "Pos.2".....等
集合视图数据源:
func colletionView(_ collectionView.UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CVCell", for: indexPath as! CVCell
let text = myModel.myText[indexPath.item]
let myAttribute = [NSAttributedString.Key.foregroundColor: UIColor.blue]
let myAttributedText = NSAttributedString(string: text, attributes: myAttributes as [NSAttributedString.Key : Any])
cell.label.attributedText = myAttributedText
return cell
}
我试过创建 NSAttributedString 或 NSAttribtuedString.Key 的数组,但它从未编译。我该怎么做才能在 indexPath.item 处获得正确的值?或者这完全是错误的方法?
let cellColor = [
NSAttributedString.Key.foregroundColor: UIColor.blue
NSAttributedString.Key.foregroundColor: UIColor.red
...
最终,我希望将数据放在 plist 或 json 文件或核心数据中,但(我相信)仍然需要将数据加载到数组中(我相信)才能访问通过 indexPath.item.
我不是很有经验,所以我可能会遗漏一些非常基本的东西。
您必须创建一个数组来存储模型中的颜色,就像您为文本设置的那样
型号:
let myText = ["Pos.1", "Main Verb", "Pos.2".... etc
let myColors = [UIColor.blue, UIColor.red, UIColor.green.... etc
然后像这样访问它
...
let text = myModel.myText[indexPath.item]
let color = myModel.myColors[indexPath.item]
let myAttributes: [NSAttributedString.Key : Any] = [.foregroundColor: color]
let myAttributedText = NSAttributedString(string: text, attributes: myAttributes)
...
注意你发的不是数组而是Dictionary。
此外,如果您只是更改文本颜色,则不必使用 NSAttributedString
,您可以更改标签 textColor
属性
编辑:
根据@Larme 的建议,您还可以创建一个结构来保存模型中的数据,这样您就可以只有一个数组:
struct TextSettings {
let text: String
let color: UIColor
}
let myTextSettings = [TextSettings(text: "Pos.1", color: UIColor.blue),
TextSettings(text: "Main Verb", color: UIColor.red),
TextSettings(text: "Pos.2", color: UIColor.green), ...]
并在设置单元格时使用它
...
let settings = myModel.myTextSettings[indexPath.item]
let myAttributes: [NSAttributedString.Key : Any] = [.foregroundColor: settings.color]
let myAttributedText = NSAttributedString(string: settings.text, attributes: myAttributes)
...