Xcode插件加载资源

时间:2016-04-30 03:21:39

标签: xcode macos plugins screensaver

我正在使用Xcode 7.3为OSX编写屏幕保护程序。该屏幕保护程序将显示在屏幕周围弹跳的球的图像。但是,我目前无法从捆绑中加载图像。

这是我在ScreenSaverView中加载图片的方式:NSImage *img = [NSImage imageNamed:"ball.png"];img原来是零。

图像肯定被添加到捆绑包中:它被添加到"复制捆绑资源"屏幕保护目标;它位于Ball.saver/Contents/Resources

我尝试使用[[NSBundle mainBundle] resourcePath]打印出资源路径,并打印出系统偏好设置/Applications/System Preferences.app/Contents/Resources的路径,这是可以理解的,因为屏幕保护程序只是一个系统插件。我的问题是,如何从屏幕保护程序包中加载资源?

1 个答案:

答案 0 :(得分:0)

事实证明,对于插件,你必须找到插件的特定捆绑,而不仅仅是使用默认捆绑,这似乎是主应用程序的捆绑。这是最终的解决方案:

NSBundle *bundle = [NSBundle bundleWithIdentifier:bundleId]
NSString *filePath = [bundle pathForResource:imageName ofType:imageType];
NSImage *image = [[NSImage alloc] initWithContentsOfFile:filePath];