gpt4 book ai didi

ios - 如何以编程方式获取颜色资源目录中包含的所有颜色?

转载 作者:行者123 更新时间:2023-11-28 07:30:02 26 4
gpt4 key购买 nike

我有一个包含自定义颜色的颜色 Assets 目录。有没有办法在应用程序中获取和显示它们?像这样

func getColorsFromAssetCatalog() -> [UIColor]? {
//Somehow return those colors
}

let colorsInCatalog = getColorsFromAssetCatalog()

for color in colorsInCatalog {
// Do something
}

最佳答案

目前无法请求 Assets 目录以编程方式告诉您它包含的所有 Assets 。也就是说,恕我直言,没有 API 可以让您获取已添加到 Assets 目录中的颜色名称(或其他 Assets 名称)。
如果您已经知道名称,当然可以获取颜色/ Assets 。

此外, Assets 目录编译成不可读的 Assets.car,因此尝试读取该文件也是徒劳的。

无论如何...回到您的案例,您将不得不手动维护一些机制,例如 Enum 来跟踪颜色。


解决方案:

  • 为 Assets 目录添加颜色;说名为“WeirdOrange”
  • 使用 Enum 来维护您的自定义颜色名称,例如:

    enum Colors: String {
    //... previous cases
    case weirdOrange = "WeirdOrange" //... now we add this one
    }
  • 在应用中将其用作:

    UIColor(named: Colors.weirdOrange.rawValue)

示例:

让我们根据您的目的对其进行微调:

enum Colors: String, CaseIterable {
case funkyMunky = "FunkyMunky"
case weirdOrange = "WeirdOrange"
case popBlue = "PopBlue"
case murkyPoo = "MurkyPoo"

static var assetCatalogued: [UIColor] {
return self.allCases.compactMap { (colorCase) -> UIColor? in
return UIColor(named: colorCase.rawValue)
}
}
}

for color in Colors.assetCatalogued {
//Do something
print(color)
}

注意:

  • 要运行该示例,请更改颜色名称或添加具有给定名称的颜色,否则 Colors.assetCatalogued 将不会返回任何 UIColor
  • 用过CaseIterable对于 .allCases
  • 在添加/删除相关颜色 Assets 时,您必须手动添加/删除案例

关于ios - 如何以编程方式获取颜色资源目录中包含的所有颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com