我在我的项目中有一个包含图片的文件夹,我想知道如何将该文件夹中的图片放入数组中
我该怎么做呢?
我尝试这样将图像放入数组中
UIImage*image = [[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];
NSArray*images = [[NSMutableArray alloc]initWithContentsOfFile:image];发布于 2012-12-11 00:08:14
您可以执行以下操作,获取文件名数组,然后用图像本身填充另一个数组(假设这就是您要做的事情)。
NSMutableArray *imagePaths = [[NSMutableArray alloc] init];
NSMutableArray *images = [[NSMutableArray alloc] init];
NSArray *imageTypes = [NSArray arrayWithObjects:@"jpg", @"jpeg", @"gif", nil];
// load the imagePaths array
for (NSString *imageType in imageTypes)
{
NSArray *imagesOfParticularType = [[NSBundle mainBundle]pathsForResourcesOfType:imageType
inDirectory:@"Images"];
if (imagesOfParticularType)
[imagePaths addObjectsFromArray:imagesOfParticularType];
}
// load the images array
for (NSString *imagePath in imagePaths)
[images addObject:[UIImage imageWithContentsOfFile:imagePath]];顺便说一句,除非这些是很小的缩略图图像,而且你只有很少的图像,通常不建议像这样一次加载所有的图像。通常,因为图像可能会占用大量RAM,所以您将保留文件名数组,但将图像的加载推迟到真正需要它们时。
如果您没有成功检索到您的图像,则有两个问题:


如果您选择了“为添加的文件夹创建文件夹引用”,那么该文件夹将在您的项目中显示为蓝色(参见前面屏幕快照中我的"db_images“文件夹旁边的蓝色图标)。如果你选择了"create groups for added folders",那么在你的"Images“组旁边会有一个典型的黄色图标。最重要的是,在这个场景中,您要在子目录"Images“中查找图像,您需要使用”为添加的文件夹创建文件夹引用“选项,并在图像旁边显示结果蓝色图标。
归根结底,你需要确保图片在你的应用程序包中,并且它们在你认为的地方。还要注意,iOS区分大小写(虽然模拟器不区分大小写),因此请确保"Images“的大小写正确。
发布于 2012-12-11 00:05:46
如果我正确理解了你的问题,根据文档,initWithContentsOfFile没有做你期望的事情:
“用给定路径指定的文件内容初始化新分配的数组。”
此外,pathsForResourceOfType已经在创建数组,而不是UIImage,您可以简单地执行以下操作:
NSArray* images = [[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];发布于 2012-12-11 00:08:05
[[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];已返回这些对象的数组。将您的行更改为:
NSArray *images = [[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];请注意,此数组将仅保存所有图像的路径。为了创建它们的图像,您需要调用
for(NSString* imagePath in images) {
UIImage* anImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
//do something with your image here.
}希望这能有所帮助
https://stackoverflow.com/questions/13804337
复制相似问题