首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图片放入数组Ios开发

图片放入数组Ios开发
EN

Stack Overflow用户
提问于 2012-12-10 23:50:55
回答 5查看 2.4K关注 0票数 2

我在我的项目中有一个包含图片的文件夹,我想知道如何将该文件夹中的图片放入数组中

我该怎么做呢?

我尝试这样将图像放入数组中

代码语言:javascript
复制
    UIImage*image = [[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];
    NSArray*images = [[NSMutableArray alloc]initWithContentsOfFile:image];
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-11 00:08:14

您可以执行以下操作,获取文件名数组,然后用图像本身填充另一个数组(假设这就是您要做的事情)。

代码语言:javascript
复制
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,所以您将保留文件名数组,但将图像的加载推迟到真正需要它们时。

如果您没有成功检索到您的图像,则有两个问题:

  1. Are我的捆绑包中包含的文件?当您为您的目标设置选择“构建阶段”并展开“复制捆绑包资源”(参见下图)时,您是否看到包含您的映像?如果您在此列表中看不到您的图像,则当您构建应用程序时,这些图像将不会包含在应用程序中。要添加图像,请单击"+“并将其添加到此列表中。

  1. Are文件在一个“组”或一个实际的子目录中?当你添加文件到项目中时,你会看到下面的对话框:

如果您选择了“为添加的文件夹创建文件夹引用”,那么该文件夹将在您的项目中显示为蓝色(参见前面屏幕快照中我的"db_images“文件夹旁边的蓝色图标)。如果你选择了"create groups for added folders",那么在你的"Images“组旁边会有一个典型的黄色图标。最重要的是,在这个场景中,您要在子目录"Images“中查找图像,您需要使用”为添加的文件夹创建文件夹引用“选项,并在图像旁边显示结果蓝色图标。

归根结底,你需要确保图片在你的应用程序包中,并且它们在你认为的地方。还要注意,iOS区分大小写(虽然模拟器不区分大小写),因此请确保"Images“的大小写正确。

票数 5
EN

Stack Overflow用户

发布于 2012-12-11 00:05:46

如果我正确理解了你的问题,根据文档,initWithContentsOfFile没有做你期望的事情:

“用给定路径指定的文件内容初始化新分配的数组。”

此外,pathsForResourceOfType已经在创建数组,而不是UIImage,您可以简单地执行以下操作:

代码语言:javascript
复制
NSArray* images = [[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];
票数 0
EN

Stack Overflow用户

发布于 2012-12-11 00:08:05

代码语言:javascript
复制
[[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];

已返回这些对象的数组。将您的行更改为:

代码语言:javascript
复制
 NSArray *images = [[NSBundle mainBundle]pathsForResourcesOfType:@"jpg" @"jpeg" @"gif" inDirectory:@"Images"];

请注意,此数组将仅保存所有图像的路径。为了创建它们的图像,您需要调用

代码语言:javascript
复制
for(NSString* imagePath in images) {

    UIImage* anImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
    //do something with your image here.
}

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13804337

复制
相关文章

相似问题

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