【问题标题】:How to Convert a string into a UIColor (Swift)如何将字符串转换为 UIColor (Swift)
【发布时间】:2019-09-29 23:35:42
【问题描述】:

我在我的 SKScene 中定义了几种颜色:

let color1 = UIColor(red: 1, green: 153/255, blue: 0, alpha: 1)
let color2 = UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1)
let color3 = UIColor(red: 0, green: 0, blue: 1, alpha: 1)
let color4 = UIColor(red: 0, green: 1, blue: 0, alpha: 1)
let color5 = UIColor(red: 153/255, green: 0, blue: 1, alpha: 1)
let color6 = UIColor(red: 1, green: 0, blue: 0 , alpha: 1)

这些颜色对应于我的游戏中具有不同值的图块。一个瓦片与 color1 等...

当瓷砖加在一起时,我将它们的值相加,并想根据它们的值赋予它们新的颜色。

所以我想让图块的值对图块的颜色产生影响。

我试过了:

tile.color = UIColor(named: "color\(value)") ?? color1

但是当我这样做时,它总是使用默认值(color1)。

如何使图块的值对图块的颜色产生影响?

【问题讨论】:

    标签: swift string type-conversion uicolor


    【解决方案1】:

    命名UIColors 是从 xcassets 目录中的颜色集初始化的。


    你可以根据你的值设置颜色

    switch value {
        case 2: tile.color = color2
        ...
        default: tile.color = color1
    }
    

    或者您可以在 xcassets 目录中创建颜色集。

    【讨论】:

      【解决方案2】:

      UIColor named: 仅在您定义颜色集资源时有效。由于您的颜色是在代码中定义的,UIColor named: 将永远不会返回除nil 之外的任何内容。

      一种解决方案是将颜色放入字典而不是单独的变量。

      let colors: [String: UIColor] = [
          "color1" : UIColor(red: 1, green: 153/255, blue: 0, alpha: 1),
          "color2" : UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1),
          "color3" : UIColor(red: 0, green: 0, blue: 1, alpha: 1),
          "color4" : UIColor(red: 0, green: 1, blue: 0, alpha: 1),
          "color5" : UIColor(red: 153/255, green: 0, blue: 1, alpha: 1),
          "color6" : UIColor(red: 1, green: 0, blue: 0 , alpha: 1),
      ]
      

      然后你可以得到你的颜色:

      tile.color = colors["color\(value)"] ?? colors["color1"]!
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-31
        • 2012-08-06
        • 2014-09-23
        • 1970-01-01
        • 2014-11-07
        • 1970-01-01
        • 2018-09-02
        相关资源
        最近更新 更多