我尝试获取一个文件图标并将其设置回同一个文件(目标是覆盖,但我首先要让这个工作):
NSImage *img=[[NSWorkspace sharedWorkspace] iconForFile:@"MyFilePath"];
NSLog(@"x=%.f",img.size.width); // Result=32
[[NSWorkspace sharedWorkspace] setIcon:img forFile:@"MyFilePath" options:0];
- >结果是我的文件获得了标准的Finder图标,而不是保留自己的图标。我做错了什么?
答案 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
相关的属性 - 您可以从中获取它的编码能力和创造力。