cocoa - 在 cocoa 中显示图像

标签 cocoa image

我对此完全陌生,但这里是: 我想在我的应用程序中按下一个按钮,并显示图像(我计划从相机中读取它,但首先,我将打开一个 .TIF 文件。)但是,在界面生成器中,我可以在 NSObject 对象中创建按钮,但文献听起来好像我需要创建一个 NSView 对象来显示文件。问题是,当我这样做时, NSObject 对象似乎没有与 NSView 对象对话。我正在尝试做类似的事情:

    NSString *inFilePath;
    inFilePath = @"/Volumes/Data/Temp/Smiles.tiff";
    NSImage *TestImage = [[NSImage alloc] initWithContentsOfFile:inFilePath];
    [MyView setImage:TestImage];

这里,MyView是NSView对象。我收到警告称 MyView 可能不会响应 setImage。我尝试在 NSObject 对象中定义 IBOutlet,尽管我可以在界面生成器中连接它,但控制台给出了错误:

无法识别的选择器发送到类 0x1e080

因此,目前尚不清楚下一步是什么。有没有一种简单的方法可以让两个不同的对象相互“交谈”? 谢谢

最佳答案

您需要一个 NSImageView 对象。在 Interface Builder 库中,这称为图像井,但您可以对其进行配置,使其没有边框。

NSImageViewNSView 的子类,针对显示图像进行了优化。

在你的头文件(.h)中,你应该有这样的内容:

 @interface MyController : NSObject
{
    //this declares an outlet so you can hook up the 
    //image view in Interface Builder
    IBOutlet NSImageView* imageView;
}
@end

在您的实现 (.m) 文件中:

@implementation MyController

//called once the nib is loaded and all outlets are available
- (void)awakeFromNib
{
    NSString *inFilePath = @"/Volumes/Data/Temp/Smiles.tiff";
    NSImage *testImage = [[NSImage alloc] initWithContentsOfFile:inFilePath];
#if !__has_feature(objc_arc)
  [testImage autorelease];
#endif
    //imageView is your outlet
    [imageView setImage:testImage];
}

@end

在 Interface Builder 中,您应该连接类的 imageView 导出,以指向您放置在 View 上的 NSImageView

关于cocoa - 在 cocoa 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237703/

相关文章:

iphone - 释放包含 NSDictionary 对象的 NSArray

cocoa - 将库上传到 cocoa pod

html - 导航栏上的响应式品牌形象

c# - 将图像从word文档转换为位图对象

javascript - 如何在鼠标悬停在图像上时显示 Facebook "like"链接?

objective-c - 在 viewDidUnload() 中设置为 nil

macos - 在 mac 应用程序中创建功能以覆盖用户安全设置

objective-c - 如何获取 Cocoa 中字符的 int ASCII 值?

html - 缩略图图像大小不起作用

facebook - 如何使用图形 API 将图像链接发布到 Facebook feed