如何在 Swift 中像数组一样访问图像资源

Posted

技术标签:

【中文标题】如何在 Swift 中像数组一样访问图像资源【英文标题】:How to access Image Assets like an array in Swift 【发布时间】:2017-02-18 20:09:50 【问题描述】:

在我的应用中,我允许用户根据颜色更改一些 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")”更改为无法编辑的图标。

【问题讨论】:

您认为这会有所帮助吗? : But_Settings.setImage(UIImage(named: "play.png"), for: UIControlState.normal)。在这里,您使用的是资产名称。 @VandanPatel - 是的,这确实有帮助。我希望你把它作为一个答案,所以我可以相信你。不过,谢谢。 我就是这么做的。大声笑 【参考方案1】:

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

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

【讨论】:

是的!和杜!谢谢【参考方案2】:

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

【讨论】:

【参考方案3】:

由于它的选择数量有限,这听起来像是一个枚举的好地方。

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

【讨论】:

以上是关于如何在 Swift 中像数组一样访问图像资源的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中像在 Java 中一样使用套接字

如何在android中创建图像文件夹资源

如何在Objective C中像Marquee Tag一样为UIImage设置动画

如何仅在 Swift 中访问从相机拍摄的图像,就像 iOS 中的画廊一样?

在 Swift 中像 Tab View Controller 一样滑动 uiView

如何在 Knex 中像查询一样逃避 %?