Macos 如何在文件';s图标

Macos 如何在文件';s图标,macos,cocoa,progress-bar,Macos,Cocoa,Progress Bar,你知道,当我们使用safari和chrome复制文件或下载文件时,文件图标上有一个迷你进度条 我想知道当我用自己的代码复制或下载文件时,如何让它显示在Finder窗口中 谁能帮帮我吗 非常感谢。一个起点是使用一个程序指示器,然后[progressIndicator SetUndeterminate:NO]。然后,更新/后台操作应该而不是阻止主线程NSProgressIndicator对于AppKit小部件来说有点不同——它允许从辅助线程进行一些更新。当然,对“当前进度”的更新也可能在主线程的运行

你知道,当我们使用safari和chrome复制文件或下载文件时,文件图标上有一个迷你进度条

我想知道当我用自己的代码复制或下载文件时,如何让它显示在Finder窗口中

谁能帮帮我吗


非常感谢。

一个起点是使用一个
程序指示器,然后
[progressIndicator SetUndeterminate:NO]。然后,更新/后台操作应该而不是阻止主线程
NSProgressIndicator
对于AppKit小部件来说有点不同——它允许从辅助线程进行一些更新。当然,对“当前进度”的更新也可能在主线程的运行循环中排队。

我自己通过查询文件/目录属性找到了方法。这很简单

获取要在其图标上显示进度条的文件的属性

NSDictionary *fileAttr = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
获取扩展属性

NSDictionary *extendAttr = [fileAttr objectForKey:@"NSFileExtendedAttributes"];
创建extendAttr的可变副本并更改其中的某些值

NSMutableDictionary *mutableExtendAttr = [NSMutableDictionary dictionaryWithDictionary:extendAttr];
// create data of progress value
NSData *progressData = [@"0.1" dataUsingEncoding:NSASCIIStringEncoding];
// change it
[mutableExtendAttr setObject:progressData forKey:@"com.apple.progress.fractionCompleted"];
创建fileAttr的可变副本

 NSMutableDictionary *mutableFileAttr = [NSMutableDictionary dictionaryWithDictionary:fileAttr];
 // change extend attr
 [mutableFileAttr setObject:[NSDictionary dictionaryWithDictionary:mutableExtendAttr] forKey:extendAttrKey];
 // change file/dir create date to the special one
 // if not , progress bar will not show
 [mutableFileAttr setObject:[NSDate dateWithString:@"1984-01-24 08:00:00 +0000"] forKey:NSFileCreationDate];
 // set attribute to file
 [[NSFileManager defaultManager] setAttributes:mutableFileAttr ofItemAtPath:filePath error:&error];

现在你会发现进度条出现了。

我想你还没有得到我上面描述的内容。例如,当您将一个大文件(如1GB文件)复制到新目录时,它不会立即完成,然后查看目录中的新文件,其图标下有类似进度条的内容。我感兴趣的是,当我用我的代码编写文件时,如何显示进度条(在文件图标下)。仅供参考:如果您安装了@justinupdate,您可以在我的答案中找到一些信息:chrome的下载文件名似乎以结尾。crdownload没有使用此方法,我想知道chrome是如何做到的。@UJey我只测试了OSX 10.8,因为我只有一个10.8 Mac mini。但问题表明chrome使用了相同的方法。有没有办法以类似的方式将进度条添加到启动板图标中?@DavidKocher更倾向于建议他们依赖于mountain lion的支持。我无法在macOS Sierra上使用文件属性方法。