如何在Swift中访问图像资产(如阵列)

如何在Swift中访问图像资产(如阵列),swift,xcode,ios10,Swift,Xcode,Ios10,在我的应用程序中,我允许用户根据颜色更改一些UI元素。因此,我有三个版本的图像可用于按钮,我想通过编程方式选择图像: PSEUDO CODE "image0", "image1", "image3" var userChoice:integer myButton.setImage("myImage"+userChoice , .normal) 我已在中看到此解决方案,因此: Swift的等效代码是什么 现在我正在使用图像文字: self.But_Settings.setImage(#ima

在我的应用程序中,我允许用户根据颜色更改一些UI元素。因此,我有三个版本的图像可用于按钮,我想通过编程方式选择图像:

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

myButton.setImage("myImage"+userChoice , .normal)
我已在中看到此解决方案,因此:

Swift的等效代码是什么

现在我正在使用图像文字:

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

当然,Xcode会将这部分imageLiteralresourceName:settingswhite更改为无法编辑的图标。

然后不要使用图像文字。图像文字就是这样——代码中的一个硬值,在运行时不能更改。从捆绑包中动态加载图像:

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

你认为这会有帮助吗但_Settings.setImageUIImageName:play.png,用于:UIControlState.normal。这里您使用的是资产的名称

,因为它的选择数量有限,所以听起来是枚举的好地方

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

你认为这会有帮助吗但_Settings.setImageUIImageName:play.png,用于:UIControlState.normal。这里您使用的是资产的名称。@VandanPatel-是的,这确实有帮助。我希望你能给我一个答案,这样我就可以相信你了。尽管如此,谢谢。我只是这么做了。是的!嗯!谢谢