我正在使用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
的路径,这是可以理解的,因为屏幕保护程序只是一个系统插件。我的问题是,如何从屏幕保护程序包中加载资源?
答案 0 :(得分:0)
事实证明,对于插件,你必须找到插件的特定捆绑,而不仅仅是使用默认捆绑,这似乎是主应用程序的捆绑。这是最终的解决方案:
NSBundle *bundle = [NSBundle bundleWithIdentifier:bundleId]
NSString *filePath = [bundle pathForResource:imageName ofType:imageType];
NSImage *image = [[NSImage alloc] initWithContentsOfFile:filePath];