首页 > 解决方案 > 将图像从 xcassets 加载到 NSImage

问题描述

在 macOS Big Sur 上的 Xcode 12.4 中,我正在开发在 macOS 10.12 及更高版本上运行的第三方应用程序的 Objective-C 插件。我想从资产目录加载图像。

我已经添加abc.xcassets到项目树中,添加了几个 PDF 图像。其中一张名为test.

我想将test图像显示为警报图标。为此,我试图将图像加载到NSImage主插件类中的一个实例中。我已经尝试了所有找到的替代方案,但我仍然得到nil了图像而不是图像。

+ (void)initialize {
    NSImage *test1 = [NSImage imageNamed:@"test"];
    NSImage *test2 = [NSImage imageNamed:@"test" bundleForClass:[self class]];
    NSBundle *testBundle = [NSBundle bundleForClass:[self class]];
    NSImage *test3 = [[NSImage alloc] initWithContentsOfFile:
                        [testBundle pathForImageResource:@"test"]];

    // Later used in
    // [alert setIcon:test1];
}

但是,所有test1,test2test3nil在运行此代码之后。我错过了什么?如何正确地做到这一点?

PS:test图像由 Xcode 的 UI 构建器列出以在按钮的Image属性中选择。

标签: objective-cmacos

解决方案


这有效:

[testBundle imageForResource:@"test"]

推荐阅读