尝试在Cocoa中将图标设置为文件

时间:2014-03-19 14:43:55

标签: macos cocoa icons finder nsworkspace

我尝试获取一个文件图标并将其设置回同一个文件(目标是覆盖,但我首先要让这个工作):

NSImage *img=[[NSWorkspace sharedWorkspace] iconForFile:@"MyFilePath"];
NSLog(@"x=%.f",img.size.width); // Result=32
[[NSWorkspace sharedWorkspace] setIcon:img forFile:@"MyFilePath" options:0];

- >结果是我的文件获得了标准的Finder图标,而不是保留自己的图标。我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试使用它:

[[NSWorkspace sharedWorkspace]
              setIcon: [[NSImage alloc] initWithContentsOfFile:@"MyFilePath"]
              forFile: @"MyFilePath"
              options: 0];

您需要先将图标/图像加载到内存中。

  

编辑:答案已更新,以提供有关的其他信息   以下评论。

"如何将图像保存在内存中以便播放"在重新分配之前使用它?"

从指定路径分配到内存中的NSImage可以在加载后以任何可能的方式进行操作。您希望彻底阅读NSImage Class Reference以真正了解它的作用以及如何使用它的方法。对于此特定方案,您希望能够从您加载的图标中分配一个命名变量。

上述代码只需要进行一次更改即可使其正常工作:

NSImage *iconImage = [[NSImage alloc] initWithContentsOfFile:@"MyFilePath"];

[[NSWorkspace sharedWorkspace]
                setIcon: iconImage
                forFile: @"MyFilePath"
                options: 0];

NSLog(@"iconImage: %@",iconImage);

略有变化基本上会从iconImage图标中指定变量NSImage;其他一切都保持不变。 NSLog将让您快速了解与iconImage相关的属性 - 您可以从中获取它的编码能力和创造力。