以编程方式访问图像资产

Dan*_*Dan 1 objective-c ios

我的图像资源目录有一个名为"自然"的文件夹,里面有数百个图像文件.

我想在我的图像资源中的"自然"目录下获得一组图像文件名.然后,我将从该数组中选择一个随机图像名称并显示它[UIImage imageNamed:@"..."].我被困在如何在'IncludedStudyImages'目录下获取一系列图像名称.我甚至无法在文档中找到有关如何以编程方式与我的图像资源交互的任何内容(除了显示它们).

谢谢你的帮助.

Meg*_*iya 9

这可能会迟到,但这可能对其他人有所帮助

您无法直接访问资产中的所有文件,因为它已编译为.car

从资产访问所有文件的替代方法是创建.plist文件,其中包含资产包含的所有图像,并且可以轻松访问plist文件.以下是实现此目的的步骤

第1步:在Build Phases - > Run Script中添加脚本 在此输入图像描述

echo "<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>" >  ${SRCROOT}/${PROJECT_NAME}/files.plist;
## Chnage Assets.xcassets if not using default one
find ${SRCROOT}/${PROJECT_NAME}/Assets.xcassets -type f -not -iname "*@*" -name "*.png"  -exec basename {} \; | while read line; do echo \<key\>$line\</key\>\<string\>$line\</string\>; done >> ${SRCROOT}/${PROJECT_NAME}/files.plist;
echo "</dict></plist>" >>  ${SRCROOT}/${PROJECT_NAME}/files.plist;
Run Code Online (Sandbox Code Playgroud)

此脚本在项目目录中生成files.plist,其中assets文件中的所有图像都将此文件添加到项目中

第2步:访问plist文件

NSURL *filepath = [[NSBundle mainBundle] URLForResource:@"files" withExtension:@"plist"];
NSMutableDictionary *allXCAssetsImages = [NSMutableDictionary dictionaryWithContentsOfFile:filepath.path];
Run Code Online (Sandbox Code Playgroud)