2013-03-12 128 views
2

加载图像一点点帮助,我有400个图像有重复的名字,我已经包括在我的项目文件夹中的分级划分的,现在我想用绝对路径来加载图片,我尝试使用imagenamed而是正在加载的图像,空框显示。现在我需要一点帮助,我如何使用绝对路径显示图像。需要以绝对路径

我的项目

Project 
    -> Project Files (i-e App Deligate and view controllers) 
    -> Resources 
      ->Images 
        ->1 
         ->1.jpg 
         ->2.jpg 
         ->3.jpg 
        ->2 
         ->1.jpg 
         ->2.jpg 
         ->3.jpg 

方法的层次,我使用加载图像

[self.leftImage setImage:[UIImage imageNamed:@"Images/1/1.jpg"] forState:UIControlStateNormal]; 

等等...任何一个帮助。 问候

+2

您不能在XCode项目中使用相同的命名图像。因为在构建创建时,XCode创建一个文件夹(又名主包)来存储其所有资源。它不会引用手动创建的文件夹(例如,在您的示例中为1,2)。所以在那里同样的命名图像被替换。 对所有图像文件使用不同的名称。 – Mrunal 2013-03-12 11:11:44

+0

@mrunal我有400张图片,所以我无法将它们全部重命名?你能建议我一个解决方案来获取图像使用绝对路径或类似的东西? – 2013-03-12 11:21:14

+0

对不起,但它的规则由苹果本身设置。为了更好的方式,下载一些文件重命名管理器并重命名所有这些文件 在您的代码中,您可能需要自行更改。 – Mrunal 2013-03-12 11:32:01

回答

2

根据您的评论

下面的方法可以帮助你

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)ext inDirectory:(NSString *)subpath; 
- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)ext inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName; 

- (NSArray *)pathsForResourcesOfType:(NSString *)ext inDirectory:(NSString *)subpath; 
- (NSArray *)pathsForResourcesOfType:(NSString *)ext inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName; 

你可以试试这个代码

NSString * sample=[[[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"1"] ofType:@".jpg" inDirectory:@"foldername"]; 
[self.leftImage setImage:[UIImage imageWithContentsOfFile:sample] forState:UIControlStateNormal]; 

,你也不能有相同名称的2个图像。构建你的应用程序时,你会得到一个重复的符号警告。

对于内存高效利用pathforresource类型,而不是图像命名为UIImage的,因为它会对ViewControllers一些高速缓冲存储器。

希望它可以帮助!

+0

我没有收到任何警告,我有不同的文件夹没有不同的组? – 2013-03-12 11:19:41

+0

Yello颜色,正如我告诉过你的,我使用的文件夹不是组。 – 2013-03-12 11:28:47

+0

@ X-Factor查看我的编辑方式和c – Dany 2013-03-12 11:33:47