2017-02-18 9 views
1

私のアプリでは、色に基づいてUI要素の一部を変更することができます。だから、私はボタンに使用することができ、画像の3つのバージョンがあると私はプログラムで画像を選択したいと思います:Swiftの配列のようなイメージアセットにアクセスする方法

PSEUDO CODE 
"image0", "image1", "image3" 
var userChoice:integer 

myButton.setImage("myImage"+userChoice , .normal) 

私が見てきたSOでこのソリューション: Programmatically access image assets

を何スウィフト同等のコードでしょうか?

今、私はリテラル画像を使用しています:編集することはできませんアイコンに:Xcodeのはこの部分「#imageLiteral(resourceNameは 『settingswhiteを』)」に変更

self.But_Settings.setImage(#imageLiteral(resourceName: "settingswhite"), for: UIControlState.normal) 

もちろん

+0

これが役立つと思いますか? :But_Settings.setImage(UIImage(名前: "play.png")、for:UIControlState.normal)。ここでは、資産の名前を使用しています。 –

+0

@VandanPatel - はい、それは助けになります。私はあなたにそれを答えとして与えてくれたので、私はあなたに信用できると思います。それでも、ありがとう。 – wayneh

+0

私はちょうどそれをしました。笑 –

答えて

2

イメージリテラルを使用しないでください。イメージリテラルは、それだけです。実行時に変更できないコードの難しい値です。バンドルから画像を動的に読み込みます。

if let image = UIImage(named: "myImage" + userChoice) { 
    self.But_Settings.setImage(image, for: .normal) 
} 
+0

はい!とDUH!ありがとう – wayneh

0

これは役に立ちますか? :But_Settings.setImage(UIImage(名前: "play.png")、for:UIControlState.normal)。ここでは、資産の名前を使用しています

0

それは列挙のための良い場所のように聞こえるのは限られた数だからです。

enum ImageChoice: Int { 
case zero = 0, one, two 

var image: UIImage { 
switch self { 
    case .zero: 
    return // Some Image, can use the icon image xcode provides now 
    case .one: 
    return //another image 
    case .two: 
    return //another image 
    } 
} 
} 

次に、Int値を使用して列挙型を初期化することで、簡単に正しいイメージを取得できます。

guard let userChoice = ImageChoice(rawValue: someInt) else { return //Default Image } 
let image = userChoice.image 
関連する問題