繁体   English   中英

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

[英]Take a screenshot and then save it to the camera roll. Swift 4.2, Xcode 10

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

@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

您应检查控制台是否出现以下错误,

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM