【问题标题】:NSImage returns nil even when png file is in Resource folder即使 png 文件在 Resource 文件夹中,NSImage 也会返回 nil
【发布时间】:2013-12-25 00:57:51
【问题描述】:

我正在尝试使用 NSImage imageNamed: 方法加载图像,但没有成功

我已复制项目文件夹中的图像:项目>资源并使用:“将文件添加到项目...”添加到项目中

    NSImage* image = [NSImage imageNamed:@"logosH"];

    if (image == nil){

        NSLog(@"NULL :/");
    }

    NSImageView *accessory = [[NSImageView alloc] initWithFrame:NSMakeRect(0,0,200,55)];
    [accessory setImageScaling:NSScaleToFit];
    [accessory setImage:[NSImage imageNamed:@"logosH.png"]];
    [myAlert setAccessoryView:accessory];

    [myAlert setIcon:[NSImage imageNamed:@"HipArthroplastyTemplating.tiff"]];

    [myAlert runModal];

这里是代码。我已经尝试了在其他问题中可以找到的所有解释和解决方案但不起作用,我在控制台中收到 NULL 消息并且 setIcon 加载任何内容

我猜这是捆绑包或类似的东西(我正在学习 Objective-C,所以这是新的)

我使用了可可开发者示例的代码,但不起作用,我试图在该项目中加载我的图像,它在那里工作!!!但在我的项目中没有:/

任何帮助,任何想法?非常感谢

【问题讨论】:

  • myAlert setIcon:[NSImage imageNamed:@"HipArthroplastyTemplating.tiff"]]; 缺少左大括号。
  • NSLog(@"NULL :/"); 打印了吗?
  • 至少我可以推断,代码是正确的,因为是来自可可开发者示例的代码,我用我的图像在那里进行了测试,我认为我没有正确导入文件,但他们位于 finder 的资源文件夹和 Xcode 的项目中
  • 您需要确保将它们复制到应用程序包中的 Resources 文件夹中。检查他们的目标成员,也许?
  • 我认为这就是原因,但我对可可不太了解,所以我对应用程序包不了解。我可以说图像在项目的 Resource 文件夹和 finder 的 Resource 文件夹中

标签: objective-c nsimage nsimageview nsalert


【解决方案1】:

您的图片为空,因为未找到。如果您的图像未复制到您的包中或文件名错误,则可能会发生这种情况。

重要提示:在每次测试之前清理您的项目,以确保资源得到更新。

图片的名称也应该包含扩展名,除了 .png 不是强制性的。如果您仍然有问题,那么很可能该文件不在您的捆绑包中。要知道图像是否已复制到您的包中,请单击 Project Navigator (⌘ + 1) 中的图像并在 File Inspector 中验证 (⌘ + ⌥ + 1 ) 在 Target Membership 部分中,您的项目名称旁边的复选框已选中。

如果问题没有解决,请进入您的项目文件(顶部的第一个文件)的Project Navigator。确保左侧的选择是Target 下的项目名称。然后转到 Build Phases 选项卡并打开 Copy Bundle Resources 部分。如果您的图片不在列表中,您必须使用底部的 + 按钮添加它。

【讨论】:

  • 谢谢,我正在移动资源,但它们从 Copy Bundle Resources 中丢失了
猜你喜欢
  • 2020-06-08
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
相关资源
最近更新 更多