【问题标题】:NSImageView not working?NSImageView 不工作?
【发布时间】:2011-08-02 18:40:14
【问题描述】:

我正在尝试将图像放入视图中。这是我的代码:

NSImageView *imView = [[NSImageView alloc] initWithFrame:NSMakeRect(0, 0, 480, 360)];
    NSImage *myImage = [[NSImage alloc] initByReferencingFile:@"image.png"];
    [imView setImage:myImage];
    [theView addSubview:imView];
    [window setContentView:theView];

但窗口是空白的(没有绘制图像)。例如,如果我在视图中放置一个文本字段.. 它工作得很好,但不是 NSImageView...我检查了控制台并且没有警告/错误消息... 谢谢!

【问题讨论】:

  • 检查myImage是否有效:NSLog(@"image is valid? %@", [imView isValid] ? @"yes" : @"no");
  • 另外,您在这段代码 sn-p 中同时泄露了 imViewmyImage
  • 感谢您的意见。你是对的,它无效。有什么问题?再次感谢。
  • 是的,我知道泄漏,我只是想学习如何将图像放在 nsview 中,我现在可以不关心内存,它是我创建的一个虚拟项目,只是为了测试......谢谢不过。
  • 很可能 Cocoa 没有找到该文件。尝试改用+imageNamed:。该文件位于何处?

标签: objective-c cocoa nsview nsimageview


【解决方案1】:

由于 [imView isValid] 返回 false,这意味着 NSImage 无法基于该文件创建图像。一个常见的原因是找不到该文件。来自-initByReferencingFile:的文档,

文件名 指定具有所需图像数据的文件的完整或相对路径名。相对路径必须是相对于当前工作目录的。

这意味着-initByReferencingFile: 的行为取决于当前目录,理想情况下您应该传递完整的路径名。

更好的解决方案是使用+imageNamed:,原因有二:它使用图像缓存并且能够在应用程序包中查找文件。

【讨论】:

    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多