2017-02-17 172 views
2

隨機值我有一個enum名爲UIColor extensionmyColors選擇從枚舉

enum myColors { 
    static let backgroundColor = UIColor(hex: "#373737") 
    static let strokeColor = UIColor(hex: "#FFFCF9") 
    static let red = UIColor(hex: "#FF6978") 
    static let green = UIColor(hex: "#BCE784") 
    static let blue = UIColor(hex: "#B1DDF1") 
    static let yellow = UIColor(hex: "#FFFD98") 
    static let purple = UIColor(hex: "#A09ABC") 
} 

我想設置一個sprite顏色是隨機其中一種顏色(紅,綠,藍,黃,紫)。 我在Stack Overflow上找到了幾個答案,但都沒有成功。 我試圖這樣做:

let sprite = Player(x,y,color: myColors(rawValue: myColors.purple.rawValue+1) 

但它沒有奏效。 紫色是enum上的最後一項,所以我選擇了它。

回答

5

我建議避免存儲的enum對象裏面UIColor,我的方法:

enum myColors: String { 
    case backgroundColor = "#373737" 
    case strokeColor = "#FFFCF9" 
    case red = "#FF6978" 
    case green = "#BCE784" 
    case blue = "#B1DDF1" 
    case yellow = "#FFFD98" 
    case purple = "#A09ABC" 


    static func randomColor() -> UIColor { 
     let colorsToGetRandomly = [myColors.red, myColors.green, myColors.blue, myColors.yellow, myColors.purple] 
     let index = Int(arc4random_uniform(UInt32(colorsToGetRandomly.count))) 
     let color = colorsToGetRandomly[index].rawValue 
     return UIColor(hex: color) 
    } 
} 

myColors.randomColor() 
+1

非常感謝你。 – swiftnewbie

4

從@ vadian的回答繼,返回一個隨機顏色...

enum MyColors : String { 
    case background = "#373737" 
    case stroke = "#FFFCF9" 
    case red = "#FF6978" 
    case green = "#BCE784" 
    case blue = "#B1DDF1" 
    case yellow = "#FFFD98" 
    case purple = "#A09ABC" 

    private var uiColor : UIColor { 
     return UIColor(hex: self) 
    } 
    private var all: [UIColor] { 
     return [MyColors.background, .stroke, .red,… etc ] 
    } 

    var randomColor: UIColor { 
     let index = Int(arc4random_uniform(UInt32(all.count))) 
     return all[index].uiColor 
    } 

} 
+1

謝謝,我去了第一個答案,但謝謝你的努力:) – swiftnewbie

+0

我刪除了我的答案,因爲我忽略了* random *部分。 – vadian

+0

「枚舉不能包含存儲的屬性」 –