拍摄屏幕截图,然后将其保存到相机胶卷中。 Swift 4.2,Xcode 10

时间:2018-10-04 10:06:08

标签: ios swift xcode

我从互联网上找到了源代码,可以从当前屏幕上截取屏幕截图,然后将其保存到相机胶卷中。但是当我单击下面的按钮时,它会给出错误消息

@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
}

以下是有关错误的屏幕截图: enter image description here

我有两个问题:

(1)是否应该在Xcode用户的“构建设置”窗口中授予任何权限以将其保存到相机胶卷?如果可以,您到底能说什么? (权限类似于点击HTTP链接:App Transport Security Settings, Allow Arbitrary Loads ..)

(2)您是否知道为什么此源代码会产生错误?并且此源代码是否可以正常工作以获取屏幕截图并将其保存到相机胶卷中?

Swift 4.2, Xcode 10

1 个答案:

答案 0 :(得分:1)

您应检查控制台中是否存在以下错误,

  

此应用程序已崩溃,因为它尝试访问没有使用说明的隐私敏感数据。该应用程序的Info.plist必须包含一个NSPhotoLibraryAddUsageDescription键,该键具有一个字符串值,向用户解释该应用程序如何使用此数据。

因此,只需在NSPhotoLibraryAddUsageDescription文件中添加Info.plist键即可。