无法在NSImageView中设置图像

时间:2013-06-18 08:38:45

标签: objective-c macos nsimageview

我有一小段程序可以在Image-well中显示图像。我正在测试,但屏幕上没有显示任何内容。感谢任何人可以帮助。

.h文件:

#import <Cocoa/Cocoa.h>
@interface TestAppDelegate : NSObject <NSApplicationDelegate>
{
    IBOutlet NSImageView *myImageView;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSImageView *myImageView;
@end

.m文件:

#import "TestAppDelegate.h"

@implementation TestAppDelegate

- (void)dealloc
{
    [super dealloc];
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSString * filePath = @"haha.png";  // the pic file that I added into the project
    NSImage * aImage = [NSImage imageNamed:filePath];

    if(aImage)
    {
        NSLog(aImage.name);
        NSLog(@"size %f %f",aImage.size.width,aImage.size.height);
        //both of the NSLogs work but the Image-well shows blank            
        [myImageView setImage:aImage];
    }
}
@end

4 个答案:

答案 0 :(得分:2)

替换

NSImage * aImage = [NSImage imageNamed:filePath]

NSImage * aImage = [[NSImage alloc] initWithContentsOfFile:filePath];

答案 1 :(得分:0)

可能是应用程序包中找不到png文件。但令人困惑的是,两个NSlog函数('NSLog(aImage.name)和NSLog(@“size%f%f”,aImage.size.width,aImage.size.height)')。  正在努力和反馈。

以下是我添加png图片的方法。我创建了一个名为“资源”的新组文件夹,然后右键单击并添加准备好的照片。不确定我在这里做错了什么。

我终于明白了。只是在'myImageView set Image:aImage'中添加了一个'self'。比如[self.myImageView setImage:aImage];

答案 2 :(得分:0)

我也有一个类似的问题,我将图像添加到Assets.xcassets文件夹,但图像不会出现。该问题原来是一个格式问题,因为图片导出为box.png图片,我指定了PNG。但是我的Mac应用程序无法识别它(无论出于何种原因)。所以我从字符串名称中删除了.png

[NSImage imageNamed:@"box"]

由于某种原因,我拍摄的图像未被识别为PNG图像。但这并不重要,因为根据Apple dev docs,您无需为PNG图片指定文件格式:

  

对于PNG图像,您可以省略文件扩展名。对于所有其他   文件格式,始终包含文件扩展名。

答案 3 :(得分:-8)

您必须使用UIImageView代替NSImageView。