如何为 Mac 上的任何应用程序获取高分辨率应用程序图标?

Rai*_*sen 1 macos appkit nsworkspace swift

Apple 文档指定NSWorkspace icon(forFile:)返回 32x32 图标,但我不确定如何指定不同的大小。

这是我用来显示 XCode 图标的示例 SwiftUI 代码:

Image(
  nsImage: NSWorkspace.shared.icon(forFile: "/Applications/XCode.app/")
).renderingMode(.original)
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 7

我发现的一种方法是使用bestRepresentation. 您应该传入您想要图像的尺寸(例如 1024x1024),它会为您找到该尺寸的最佳表示形式。

if let rep = NSWorkspace.shared.icon(forFile: "/Applications/XCode.app/")
    .bestRepresentation(for: NSRect(x: 0, y: 0, width: 1024, height: 1024), context: nil, hints: nil) {

}
Run Code Online (Sandbox Code Playgroud)

然后你可以只使用drawNSImageRep,或者创建一个NSImage

let image = NSImage(size: rep.size)
image.addRepresentation(rep)
Run Code Online (Sandbox Code Playgroud)