1

我有一个框架试图从包中访问 xib 和图像。我可以正常访问 xib 但无法在 UIImageView 中加载图像。我什至检查文件是否存在并且控制台输出是...

知道如何加载图像吗?

在框架视图控制器文件中加载 xib 的代码

self = [super initWithNibName:@"ViewController_iPad" bundle:[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"MyBundle" ofType:@"bundle"]]];

加载图像的代码

- (void) loadImage
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"MyBundle.bundle/test" ofType:@"png"];
    BOOL present = NO;
    present = [[NSFileManager defaultManager] fileExistsAtPath:path];
    if (present)
    {
        NSLog(@"MyBundle.bundle/test exists");
    }
    else
    {
        NSLog(@"MyBundle.bundle/test does not exists");

    }

    self.testImageView.image = [UIImage imageNamed:path];

    self.testImageView2.image = [UIImage imageWithContentsOfFile:path];
}

MyTestHarnessApp[11671:c07] MyBundle.bundle/test 存在

4

5 回答 5

4

使用时,imageNamed:您必须只传递一个简单的文件名,并且图像必须存在于应用程序资源包的根目录中。

您的图像不在资源包的根目录中,而是在子文件夹中。

由于已经在变量中获得了图片的完整路径,所以path必须使用UIImage imageWithContentsOfFile:方法:

self.testImageView.image = [UIImage imageWithContentsOfFile:path];
于 2013-05-22T16:01:47.267 回答
2

如果+[UIImage imageNamed:]没有正确解析路径,您可以随时使用:

self.testImageView.image = [UIImage imageWithContentsOfFile: path];
于 2013-05-22T15:46:07.623 回答
1

您可以使用以下内容:

self.testImageView.image = [UIImage imageNamed:@"MyBundle.bundle/test.png"];

但似乎如果你把 XIB 也放在包中,接口将是相对于包的。

self.testImageView.image = [UIImage imageNamed:@"test.png"]
于 2013-05-22T15:23:34.197 回答
1

尝试一步一步来。

首先在主包中获取包的路径:

NSString *myBundlePath=[[NSBundle mainBundle] pathForResource:MyBundle ofType:@"bundle"];

检查捆绑包中是否有任何东西。这更适合双重检查。一旦它工作,您可以选择省略此代码。但仔细检查总是一个好主意。

 NSBundle *imageBundle=[NSBundle bundleWithPath: myBundlePath];
 NSArray *allImageURLs=[imageBundle URLsForResourcesWithExtension:@"png" subdirectory:nil];
 NSLog(@"imageURLS:  %@",allImageURLS);

由于您已经有了捆绑路径,因此将图像名称添加到路径中。或者,您可以从上述代码中已有的 url 列表中提取它。

NSString *myImagePath=[myBundlePath stringByAppendingPathComponent:@"test.png"];
NSLog(@"myImagePath=%@",myImagePath);

然后,由于您有完整路径,请加载图像

UIImage *testImage = [UIImage imageWithContentsOfFile:backgroundImagePath];

从运输应用程序获取的代码。

祝你好运

蒂姆

于 2013-05-22T18:23:01.193 回答
0

如果图像已经在主包中,只需使用图像名称:test.png 或简单地测试

[UIImage imageNamed:@"test.png"];
[UIImage imageNamed:@"test"];
于 2013-05-22T15:28:28.187 回答