2009-10-29 51 views
1

這可能是一個n00b問題,所以我提前道歉。我第一次使用NSImage,基本上我需要簡單地拍攝一張位於「我的資源」文件夾中的圖片,並在單擊按鈕時將其顯示在NSView/NSImageWell中。打印文件到NSImage不能正常工作(可可)

NSImage *image = [[NSImage alloc] initWithContentsOfFile:@"tiles.PNG"]; 
if ([image isValid]) { 
NSImageView *view = [[NSImageView alloc] init]; 
[selection setImage:image]; 
[selection setImageScaling:NSScaleProportionally]; 
} 
else { 
--- This line of code always activates meaning my image isn't valid  
} 

我唯一的猜測是我得到的圖像文件的路徑錯誤,我已經找遍了正確的方式來訪問它。另一個猜測是我的代碼錯了。任何人都熟悉這個?謝謝!

回答

3

我工作lot更多與iPhone,但initWithContentsOfFile似乎需要一個完整/相對路徑,我認爲tiles.PNG不會履行。

我會使用類方法imageNamed:(NSString *)名稱,它會爲您搜索您的包。

0

您應該使用NSBundleManger找到像這樣的形象:

NSBundle *mb=[NSBundle mainBundle]; 
NSString *fp=[mb pathForResource:@"titles" ofType:@"PNG"]; 
UIImage *img=[UIImage imageWithContentsOfFile:fp]; 

這樣,你不必與自己內部的路徑一塌糊塗。否則,你必須有相對於難以創建和維護的最終產品的路徑。

+0

請注意,他使用的是NSImage/NSImageWell,這些在iPhone上不可用,所以他必須在Mac上,因此無法訪問UIKit,並且無法訪問UIImage。另外,UIImage/NSImage * img = [UIImage imageNamed:@「titles.PNG」]將完成與上面的代碼相同並稍微清晰一些。 – refulgentis 2009-10-30 07:23:39

+0

是的,我正在寫這個MAC,而不是iPhone。我認爲代碼是正確的,但我的圖像沒有出現。我是否必須使ImageWell成爲一個自定義類,並帶有NSView的子類?我只是從IB拖出一個Imagewell,並將其稱爲「預覽」,並在將它聲明在我的.h文件中之後引用它。現在的代碼工作,因爲如果[圖像isValid]滿意,但仍然沒有圖像打印到我的觀點:( – Brian 2009-10-30 15:30:53

+0

無論你在Mac上,我只是掌握了代碼,因爲我手頭上。原理是一樣的,如果文件在資源文件夾中,使用NSBundle找到它的路徑,也可以在NSFileManager的'fileExistsAtPath:'中敲擊以確保該文件位於由NSBundle返回的路徑上 – TechZen 2009-10-30 15:37:52