将整个视图控制器共享为图像或PDF

问题描述 投票:1回答:1

我试图将整个视图控制器共享为图像或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)
}
ios swift pdf-generation share
1个回答
0
投票

编辑:尝试在底部列出最终答案。

因此,要处理ScreenShot,必须在视图的图形中进行渲染。除了应用程序使用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()!)在同一页面找到HEREview.layer.draw(in: UIGraphicsGetCurrentContext()!)

© www.soinside.com 2019 - 2024. All rights reserved.