我正在尝试构建一个简单的屏幕保护程序。我要做的第一件事是使用方法[NSImage imagedNamed:]
加载资产目录中的图像,该方法返回一个nil值,这意味着它无法找到图像。当我尝试使用方法
[[NSBundle mainBundle] URLForImageResource:]
我也得到零值。我不明白为什么会这样。图像位于资产目录中,在项目设置中,我将其设置为捆绑资源。
答案 0 :(得分:2)
您可以按名称访问资产目录中的图片,但不使用imageNamed:
的{{1}}方法 -
相反,您可以查询捆绑包以查找特定名称的图像资源,例如在请求图像的类的包中找到一个图像:
NSImage
其中 MyImageName 是指您在资产目录中指定图像的名称。
答案 1 :(得分:0)
在我继续在互联网上搜索之后,我发现屏幕保护程序是作为某种插件执行的,并且通过加载主程序包我加载了系统首选项包,这意味着我无法通过加载主要来获取我的资源bundle,我必须使用bundleIdentifier或保存包的路径加载bundle。 所以我的代码现在看起来像这样:
NSBundle*bundle=[NSBundle bundleWithIdentifier:@"com.myname.APOD"];
NSImage*image=[[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"appimage" ofType:@"png"]];