无法从图像URL向NSImageView显示图像

时间:2018-05-21 23:08:43

标签: objective-c xcode macos cocoa

我正在尝试将图像显示在NSImageView内部。这是我的代码:

- (IBAction)openExistingDocument:(id)sender {
NSOpenPanel* panel = [NSOpenPanel openPanel];

[panel beginWithCompletionHandler:^(NSInteger result){
    if (result == NSModalResponseOK) {
        NSURL*  theDoc = [[panel URLs] objectAtIndex:0];

        [self->_imageView setImage: [NSImage imageNamed: theDoc]];
    }

}];

}

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

- (IBAction)openExistingDocument:(id)sender {
NSOpenPanel* panel = [NSOpenPanel openPanel];

[panel beginWithCompletionHandler:^(NSInteger result){
    if (result == NSModalResponseOK) {
        NSURL*  theDoc = [[panel URLs] objectAtIndex:0];

        [self->_imageView setImage: [[NSImage alloc] initWithContentsOfURL:theDoc]];
    }

}];

当图像位于图像资源或Bundle中时,您可以使用[NSImage imageNamed:,而从Bundle中引用图像时,会给出带有扩展名的完整图像名称,如果图像位于Image Asset文件夹中,则名称将起作用。您不应该向[NSImage imageNamed:

提供网址

答案 1 :(得分:0)

如果图像在应用程序中,那么您可以直接在此方法中使用扩展名给出图像的名称

[NSImage imageNamed:@"Image1.png"];

,但如果您提供路径,则应使用此方法:

[[NSImage alloc] initWithContentsOfURL:theDoc];

您还可以检查此路径中是否存在文件,只是为了确保您正确行事。

我希望这有助于你