首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取xcasset中的图像数

获取xcasset中的图像数
EN

Stack Overflow用户
提问于 2016-08-31 08:01:44
回答 1查看 2.5K关注 0票数 2

我想以编程的方式从of资产中将几幅图像加载到数组中。我不知道资产中有多少图像,但这些图像是按顺序命名的,如:"img1_1""img1_2""img2_1""img2_2"、.

我将图像放在资产内部的文件夹中,因此文件夹"images1"包含以"img1_"开头的所有图像,而名为"images2"的文件夹包含以"img2_"开头的所有图像。这有用吗?

我如何在资产中获得像这样命名的图像的数量,以便迭代它们并将它们添加到我的数组中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 16:16:38

这样做并不容易,因为文件是在编译时放在应用程序中的。不过,您可以在编译之前在构建阶段创建一个RunScript,以创建图像的文本文件。然后,您可以在该文本文件中读取并填充图像数组。您可以使用该数组获取所需的详细信息。

构建阶段的RunScript

代码语言:javascript
复制
#!/bin/sh
>./your_app_folder/fileNames.txt
for FILE in ./your_app_folder/Images.xcassets/actions/*; do
echo $FILE >> ./your_app_folder/fileNames.txt
done

另外,这是一个被接受的答案的link,之前的海报要求提供更多的细节。

如果您不想处理构建阶段(我可能会选择),那么另一个选项是不使用Assets.xcassets文件。只需将图像放在应用程序包中的文件夹中即可。从包里看要容易得多。

更新:

对于第二个选项,可以将图像(或图像文件夹)拖到项目中,但要确保复制为文件夹引用而不是组。然后,在您的代码中,您可以使用FileManager读取该文件夹。

代码语言:javascript
复制
let fileManager = FileManager.default
let imagePath = Bundle.main.resourcePath! + "/your_new_folder"
let imageNames = try! fileManager.contentsOfDirectory(atPath: imagePath)

在本例中,imageNames将是该url路径中的文件名数组。如果采用这种方式,您可能也必须通过contentsOfFile加载图像。

代码语言:javascript
复制
if let imagePath = bundle.path(forResource: fileName, ofType: nil) {
    myImage = UIImage(contentsOfFile: imagePath)
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39243939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档