如何像Swift中的数组一样访问Image Assets

时间:2017-02-18 20:09:51

标签: swift xcode ios10

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

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

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

我在SO中看过这个解决方案: Programmatically access image assets

什么是Swift等效代码?

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

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

但当然Xcode将此部分“#imageLiteral(resourceName:”settingswhite“)”更改为无法编辑的图标。

3 个答案:

答案 0 :(得分:2)

然后不要使用图像文字。图像文字只是 - 在运行时无法更改的代码中的硬值。从您的包中动态加载图像:

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

答案 1 :(得分:0)

你认为这会有所帮助吗? :But_Settings.setImage(UIImage(名称:" play.png"),用于:UIControlState.normal)。在这里,您使用的是资产名称

答案 2 :(得分:0)

由于选择数量有限,因此它听起来像是一个很棒的地方。

element1

然后,您可以通过使用Int值初始化枚举来轻松获得正确的图像。

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