我从互联网上找到了源代码,可以从当前屏幕上截取屏幕截图,然后将其保存到相机胶卷中。但是当我单击下面的按钮时,它会给出错误消息
@IBAction func btnTakeScreenShot(_ sender: UIButton) {
self.takeScreenshot()
}
open func takeScreenshot(_ shouldSave: Bool = true) -> UIImage? {
print("takeScreenshot")
var screenshotImage :UIImage?
let layer = UIApplication.shared.keyWindow!.layer
let scale = UIScreen.main.scale
UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);
guard let context = UIGraphicsGetCurrentContext() else {return nil}
layer.render(in:context)
screenshotImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let image = screenshotImage, shouldSave {
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}
return screenshotImage
}
我有两个问题:
(1)是否应该在Xcode用户的“构建设置”窗口中授予任何权限以将其保存到相机胶卷?如果可以,您到底能说什么? (权限类似于点击HTTP链接:App Transport Security Settings, Allow Arbitrary Loads
..)
(2)您是否知道为什么此源代码会产生错误?并且此源代码是否可以正常工作以获取屏幕截图并将其保存到相机胶卷中?
Swift 4.2, Xcode 10
答案 0 :(得分:1)
您应检查控制台中是否存在以下错误,
此应用程序已崩溃,因为它尝试访问没有使用说明的隐私敏感数据。该应用程序的Info.plist必须包含一个NSPhotoLibraryAddUsageDescription键,该键具有一个字符串值,向用户解释该应用程序如何使用此数据。
因此,只需在NSPhotoLibraryAddUsageDescription
文件中添加Info.plist
键即可。