我正在尝试将整个视图控制器作为图像或PDF共享。下面是我将视图控制器作为图像共享的当前代码,但我不确定如何修改边界以保存整个视图控制器,包括屏幕外的内容。我也不知道如何给一个选择,以保存为图像或PDF。

@IBAction func shareButton(_ sender: Any) {
    let bounds = UIScreen.main.bounds
    UIGraphicsBeginImageContextWithOptions(bounds.size, true, 0.0)
    self.view.drawHierarchy(in: bounds, afterScreenUpdates: false)
    let img = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    let activityViewController = UIActivityViewController(activityItems: [img!], applicationActivities: nil)
    activityViewController.popoverPresentationController?.sourceView = self.view
    self.present(activityViewController, animated: true, completion: nil)
}

最佳答案

编辑:尝试下面列出的最终答案。
因此,要处理屏幕截图,必须在视图上的图形中进行渲染。应用程序使用SpriteKit时除外。你可以得到一个很好的解释here:,但推测一下,获得屏幕截图的方法是通过graphicsContext。任何不在屏幕上的内容都不在context中,因此不能用于屏幕截图。但是,可以像使用SpriteKit一样在视图外部手动绘制图形。
如果您使用的是SpriteKit,您可以这样做(找到答案here):

func getScreenshot(scene: SKScene) -> UIImage {
    let bounds = self.scene!.view?.bounds
    UIGraphicsBeginImageContextWithOptions(bounds!.size, true, UIScreen.mainScreen().scale)
    self.scene?.view!.drawViewHierarchyInRect(bounds!, afterScreenUpdates: true)
    let screenshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return screenshot;
}

let bounds = self.scene!.view?.bounds这就是我之前看到的导致我发表评论的原因。
编辑:要绘制到上下文,请尝试:
编辑:view.layer.render(in: UIGraphicsGetCurrentContext()!)找到HERE
或在同一页上找到

10-06 15:33