pathForResource方法

时间:2014-02-17 07:24:07

标签: ios objective-c uiimageview

enter image description here我正在玩imageView,并且有方法[imageWithContentsOfFile]; 但实际上它在运行后没有显示任何内容。在代码下面,有[imageNamed:]方法,它像往常一样工作。 有任何想法吗? 谢谢,

#import "ViewController2.h"

@interface ViewController2 ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController2


- (BOOL)prefersStatusBarHidden
{
    return YES;
}


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}



- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.


    // just fugly don't do it

//    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"stanford"]];


    UIBarButtonItem *shareItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];
    UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];

    NSArray *actionButtonItems = @[shareItem, cameraItem];
    self.navigationItem.rightBarButtonItems = actionButtonItems;




    NSString *imgPath =[[NSBundle mainBundle] pathForResource:@"google" ofType:@"png"];
    self.imageView.image = [UIImage imageWithContentsOfFile:imgPath];


   // self.imageView.image = [UIImage imageNamed:@"google"];


}




- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}




@end

我猜问题是pathForResource方法不能正常工作......

3 个答案:

答案 0 :(得分:4)

如果你的目标是iOS 7+,并使用资产目录(它看起来像你正在使用,因为你在其中一条评论中指定了images.xcassets),Xcode 5现在将资产置于一种新的文件格式。所有资产都有1个文件。这意味着您无法使用imageWithContentsOfFile:直接访问该文件。这也是pathForResource:ofType:没有返回路径的原因。

如果您需要直接访问该文件,可以将其作为资产目录之外的普通图像包含。

您还应该问自己是否需要直接访问该文件。在大多数情况下,您可以使用imageNamed:。这也为您提供了图像的自动缓存,并可以提高性能。

答案 1 :(得分:0)

设置breakPoint以检查“imgPath”结果。如果为空,也许您应该将@ 2x添加到名称:

NSString * imgPath = [[NSBundle mainBundle] pathForResource:@“google @ 2x”ofType:@“png”];

答案 2 :(得分:0)

- >右键单击项目导航器中的图像

- >在Finder中显示

- >右键单击finder中的图像

- >获取信息

- >寻找文件名和扩展名。

- >在项目中使用相同的名称和扩展名。它会起作用。