我使用下面的代码使用 NSOpenPanel 打开图像,但不起作用
//panel=NSOpenPanel
NSString *imgg = [NSString stringWithFormat:@"%@",panel.URL];
self.imgUser.image=[NSImage imageNamed:imgg];
最佳答案
问题是 +[NSImage imageNamed:] 不通过 URL 加载图像。如果您阅读文档,它会解释它的实际用途:它会查找以该名称存储在缓存中的图像,或者以该文件名存储在应用程序包或 AppKit 框架中的图像。
有很多方法可以实际通过 URL 打开图像。您可能正在寻找的是:
NSImage *image = [[[NSImage alloc] initWithContentsOfURL:panel.URL] autorelease];
此外,作为一个附带问题,您尝试将 URL 转换为路径的方式不正确。如果您有 file://localhost/Users/user437064/Pictures/mypic.jpg 的 NSURL,只需将其转换为字符串即可获得 @"file://localhost/Users/user437064/Pictures/mypic.jpg"。这不是可以与基于路径的 API 一起使用的路径。你真正想要的是@“/Users/user437064/Pictures/mypic.jpg”,而你得到它的方式是-[NSURL path]。所以“NSString *imgg = [panel.URL 路径];”。但这无关紧要;除非您需要处理非常旧版本的 OS X 或过时的 API,否则几乎总是有一个方法为每个采用路径的方法采用 URL,并且通常不推荐使用基于路径的方法。
作为一个更离题的问题,您不需要 stringWithFormat: 将某些内容转换为字符串; “[panel.URL description]”给出的结果与“[NSString stringWithFormat:@"%@", panel.URL]”完全相同,更简单,更高效。
关于objective-c - 无法使用 NSOpenPanel 打开图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355591/