我可以通过编程方式在资产目录之间切换吗?

问题描述 投票:2回答:1

在我的应用程序中,您可以选择“猫”或“狗”。根据此设置,应用程序中的所有图像均应不同:图标,背景等

我不想为所有图像创建单独的出口,并编写替换这些图像的代码。是否有一种机制可以让我根据内部变量有条件地使用一组图像或另一组图像。

最接近我需要的是iOS资产目录对Dark Appearance的支持-根据应用程序的外观,神奇地替换了我应用程序中的所有图像(包括通过界面构建​​器设置的图像,没有插座)。我想要相同的行为,但是基于我的内部设置。

ios objective-c swift xcode interface-builder
1个回答
0
投票

创建两个Resource Bundles,随便命名,它们将表示您所在州的数据收集。

    在每个束中添加*.xcassets并分配图像
  • 创建代表您的应用程序状态的枚举
  • `
  • enum AppState { case dog case cat var bundle: Bundle { switch self { case .dog: return Bundle(identifier: "com.dog")! case .cat: return Bundle(identifier: "com.cat")! } }

    `

    就是这样,瞧。当然,可以通过扩展图像来使您的生活更轻松。我为您提供了相同的图像名称,只有状态会发生变化。

    extension UIImage { func getImage(named: String, state: AppState) { return UIImage(named: named, in: state.bundle!) } }

    希望这就是您所需要的。

  • © www.soinside.com 2019 - 2024. All rights reserved.