swift - ARKit 中的 ScreenShot 问题在 swift 中

标签 swift arscnview

我有一个使用 ARSCNView 的应用程序。我正在尝试通过单击按钮截取屏幕截图并将该图像保存在图库中。但是当我截取屏幕截图时,它不会显示该屏幕上的内容。只显示该图像,我在上面有一些标签,但它没有在图像中显示。这是我的代码,

  @IBAction func captureImage(_ sender: Any) {


 image = sceneView.snapshot()
     UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
}

如何在屏幕截图中显示 ARSCView 上的标签和按钮?

最佳答案

snapshot() 只会对场景进行截图。

要截取带有标签和按钮的场景,请使用以下方法:

 func snapshot(of rect: CGRect? = nil) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.isOpaque, 0)
        self.view.drawHierarchy(in: self.view.bounds, afterScreenUpdates: true)
        let fullImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        guard let image = fullImage, let rect = rect else { return fullImage }
        let scale = image.scale
        let scaledRect = CGRect(x: rect.origin.x * scale, y: rect.origin.y * scale, width: rect.size.width * scale, height: rect.size.height * scale)
        guard let cgImage = image.cgImage?.cropping(to: scaledRect) else { return nil }
        return UIImage(cgImage: cgImage, scale: scale, orientation: .up)
    } 

截图:

 @IBAction func takeScreenShotTapped(_ sender: Any) {
    let screenShot = snapshot(of: CGRect(x: 80, y: 80, width: 100, height: 100))
}

如果你想截取全屏屏幕,只需调用snapshot()即可。

希望这对你有帮助:)

关于swift - ARKit 中的 ScreenShot 问题在 swift 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50947317/

相关文章:

ios - ARKit:在屏幕上查找 SCNNode 的坐标

swift - 未调用方法renderer(_:didAdd节点:,用于 anchor :)

audio - 带有位置音频SCNAudioPlayer的ARKit SceneKit ARSCNView不会停止播放

ios - 检查 ARSession 是否正在运行 (ARKit)

ios - 如何快速使用来自 reverseGeocodeLocation 的数据?

arrays - 如何通过设置的按钮单击次数显示然后更改图像数组

ios - 快速将按钮操作添加到 TableView 单元格

ios - 如何通过制作单词列表文件的数组来确定数组中的每个元素是否包含某个字母(swift 2)

swift - 如何重新加载经过编辑的更改的 CloudKit 单元

swift - 如何在 SCNNode 对象 boundingBox 中定位对象以显示/隐藏功能