如何拍摄整个屏幕的屏幕截图

时间:2020-05-11 23:09:50

标签: swift xcode macos

我创建了一个基于菜单的基于Xcode swift的软件。我创建的按钮之一旨在捕获屏幕截图并将文件保存到特定位置。

我找到了解释如何在iOS上执行此操作的资源,但我正在寻找macOS功能。文章Programmatically Screenshot | Swift 3, macOS的回答使我很接近,但我认为其中一些已被弃用。

如何在使用Xcode和Swift 5为macOS开发的软件中实现此功能。

以下是该函数的代码:

model.slidertwo

代码的第二部分是菜单项,它是一个按钮。我希望该按钮拍摄屏幕截图,然后将文件保存到我指定的位置。

我在应用程序上使用按钮时收到此错误: Error

1 个答案:

答案 0 :(得分:0)

该错误与保存文件有关。您的URL构造不正确。

首先,将~扩展到主目录通常是Shell功能,而不是OS功能。基础文件路径API(例如open())仅将其视为路径中的普通字符。 Foundation确实支持在路径字符串(不是URL)中扩展~,但是您必须使用expandingTildeInPath来具体请求。它永远不会是自动的,并且在URL中永远不会有意义。

接下来,我怀疑您正在尝试为Documents目录中的文件构建URL。但是,您没有在目录名和文件名之间放置路径分隔符(/)。换句话说,您构造的是~/Documents10989439875_1.jpg,而不是~/Documents/10989439875_1.jpg

您应该使用FileManager().urls(for:.downloadsDirectory, in:.userDomainMask)[0]来获取指向Downloads文件夹的URL,然后使用appendingPathComponent(_:isDirectory:)将路径组件附加到该文件夹​​。