Swift-dagi bir qator kabi rasm obyektlariga qanday kira olasiz?

Mening ilovamda foydalanuvchilarga rangga asoslangan UI elementlarining ayrimlarini o'zgartirishga ruxsat beraman. Shunday qilib, men bir tugma uchun ishlatilishi mumkin bo'lgan rasmning uchta versiyasiga ega bo'laman va rasmni dasturiy jihatdan tanlashni xohlayman:

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

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

I've seen this solution in SO: Programmatically access image assets

Swift ekvivalenti kodi nima bo'ladi?

Ayni paytda rasmni tom ma'noda ishlataman:

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

lekin, albatta, Xcode ushbu qismni "#imageLiteral (resourceName:" settingswhite ") o'zgartirolmaydigan belgiga o'zgartiradi.

1
Bu sizga yordam beradimi? : But_Settings.setImage (UIImage (nomi: "play.png") uchun: UIControlState.normal). Bu erda siz aktivning nomidan foydalanmoqdasiz.
qo'shib qo'ydi muallif Vandan Patel, manba
Bu sizga yordam beradimi? : But_Settings.setImage (UIImage (nomi: "play.png") uchun: UIControlState.normal). Bu erda siz aktivning nomidan foydalanmoqdasiz.
qo'shib qo'ydi muallif Vandan Patel, manba
Bu sizga yordam beradimi? : But_Settings.setImage (UIImage (nomi: "play.png") uchun: UIControlState.normal). Bu erda siz aktivning nomidan foydalanmoqdasiz.
qo'shib qo'ydi muallif Vandan Patel, manba
Men buni qildim. ahahaha
qo'shib qo'ydi muallif Vandan Patel, manba
Men buni qildim. ahahaha
qo'shib qo'ydi muallif Vandan Patel, manba
@VandanPatel - Ha, bu yordam beradi. Sizga javob sifatida bergan bo'lsangiz, men sizga qarz beraman. Shunga qaramay, rahmat.
qo'shib qo'ydi muallif wayneh, manba
@VandanPatel - Ha, bu yordam beradi. Sizga javob sifatida bergan bo'lsangiz, men sizga qarz beraman. Shunga qaramay, rahmat.
qo'shib qo'ydi muallif wayneh, manba
@VandanPatel - Ha, bu yordam beradi. Sizga javob sifatida bergan bo'lsangiz, men sizga qarz beraman. Shunga qaramay, rahmat.
qo'shib qo'ydi muallif wayneh, manba

8 javoblar

Keyin tasvirni literaldan foydalanmang. Rasm tamg'alari faqat shu - kodning ishlash muddati davomida o'zgartira olmaydigan qattiq qiymat. Bundle'dan dinamik ravishda tasvirni yuklab oling:

if let image = UIImage(named: "myImage" + userChoice) {
    self.But_Settings.setImage(image, for: .normal)
}
2
qo'shib qo'ydi
Ha! va DUH! Rahmat
qo'shib qo'ydi muallif wayneh, manba

Keyin tasvirni literaldan foydalanmang. Rasm tamg'alari faqat shu - kodning ishlash muddati davomida o'zgartira olmaydigan qattiq qiymat. Bundle'dan dinamik ravishda tasvirni yuklab oling:

if let image = UIImage(named: "myImage" + userChoice) {
    self.But_Settings.setImage(image, for: .normal)
}
2
qo'shib qo'ydi
Ha! va DUH! Rahmat
qo'shib qo'ydi muallif wayneh, manba

Keyin tasvirni literaldan foydalanmang. Rasm tamg'alari faqat shu - kodning ishlash muddati davomida o'zgartira olmaydigan qattiq qiymat. Bundle'dan dinamik ravishda tasvirni yuklab oling:

if let image = UIImage(named: "myImage" + userChoice) {
    self.But_Settings.setImage(image, for: .normal)
}
2
qo'shib qo'ydi
Ha! va DUH! Rahmat
qo'shib qo'ydi muallif wayneh, manba

Bu sizga yordam beradimi? : But_Settings.setImage (UIImage (nomi: "play.png") uchun: UIControlState.normal). Bu erda siz aktivning nomidan foydalanmoqdasiz

0
qo'shib qo'ydi

Bu sizga yordam beradimi? : But_Settings.setImage (UIImage (nomi: "play.png") uchun: UIControlState.normal). Bu erda siz aktivning nomidan foydalanmoqdasiz

0
qo'shib qo'ydi

Bu sizga yordam beradimi? : But_Settings.setImage (UIImage (nomi: "play.png") uchun: UIControlState.normal). Bu erda siz aktivning nomidan foydalanmoqdasiz

0
qo'shib qo'ydi

Tanlovning cheklangan miqdori bo'lgani uchun bu enum uchun yaxshi joy kabi ko'rinadi.

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
  }
 }
}

Keyinchalik, Int qiymatini ishlatib, enumni ishga tushirish orqali to'g'ri tasvirni osongina olishingiz mumkin.

guard let userChoice = ImageChoice(rawValue: someInt) else { return //Default Image }
let image = userChoice.image
0
qo'shib qo'ydi

Tanlovning cheklangan miqdori bo'lgani uchun bu enum uchun yaxshi joy kabi ko'rinadi.

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
  }
 }
}

Keyinchalik, Int qiymatini ishlatib, enumni ishga tushirish orqali to'g'ri tasvirni osongina olishingiz mumkin.

guard let userChoice = ImageChoice(rawValue: someInt) else { return //Default Image }
let image = userChoice.image
0
qo'shib qo'ydi