我有一个试图从捆绑中访问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
答案 0 :(得分:4)
当您使用imageNamed:
时,您必须只传递一个简单的文件名,并且图片必须存在于应用程序资源包的根目录中。
您的图片不在资源包的根目录中,它位于子文件夹中。
由于您已在path
变量中获取了图片的完整路径,因此您必须使用UIImage imageWithContentsOfFile:
方法:
self.testImageView.image = [UIImage imageWithContentsOfFile:path];
答案 1 :(得分:2)
如果+[UIImage imageNamed:]
未正确解析路径,您可以始终使用:
self.testImageView.image = [UIImage imageWithContentsOfFile: path];
答案 2 :(得分:1)
您可以使用以下内容:
self.testImageView.image = [UIImage imageNamed:@"MyBundle.bundle/test.png"];
但似乎如果你也把XIB放在捆绑中,那么界面将相对于捆绑包。
self.testImageView.image = [UIImage imageNamed:@"test.png"]
答案 3 :(得分:1)
尝试一步一步。
首先获取主包中的包的路径:
NSString *myBundlePath=[[NSBundle mainBundle] pathForResource:MyBundle ofType:@"bundle"];
检查捆绑包中是否有任何内容。这更适合双重检查。一旦它工作,您可以选择省略此代码。但仔细检查事物总是一个好主意。
NSBundle *imageBundle=[NSBundle bundleWithPath: myBundlePath];
NSArray *allImageURLs=[imageBundle URLsForResourcesWithExtension:@"png" subdirectory:nil];
NSLog(@"imageURLS: %@",allImageURLS);
由于您已经拥有捆绑路径,因此请将映像名称添加到路径中。或者您可以从上面代码中已有的网址列表中提取它。
NSString *myImagePath=[myBundlePath stringByAppendingPathComponent:@"test.png"];
NSLog(@"myImagePath=%@",myImagePath);
然后,由于您有完整路径,请加载图像
UIImage *testImage = [UIImage imageWithContentsOfFile:backgroundImagePath];
从发货应用中获取的代码。
祝你好运
添
答案 4 :(得分:0)
如果图像已经在主要包中,只需使用图像名称:test.png或只是测试
[UIImage imageNamed:@"test.png"];
[UIImage imageNamed:@"test"];