【问题标题】:Share entire view controller as image or PDF将整个视图控制器共享为图像或 PDF
【发布时间】:2018-08-05 09:58:21
【问题描述】:

我正在尝试将整个视图控制器共享为图像或 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)
}

【问题讨论】:

  • 我想我最近在 stackoverflow 的其他地方看到了这个。生病寻找答案,但如果我没记错的话,您需要将bounds.size 更改为您需要捕获的总大小,然后设置点开始查看您的视图之外以捕获所有它。
  • 现在只是为了确保,您不是要在屏幕外捕获表格或集合视图,对吧?因为几乎所有情况下,数据直到出现在屏幕上才会加载。
  • 是的,我正在尝试捕获屏幕外的表格视图,因此不使用表格视图可能更容易,滚动视图是否允许我捕获屏幕外的内容?跨度>
  • 是的。但如果你的数据太大,就会出问题
  • 我尝试使用滚动视图,但它仍然只捕获屏幕上的内容,让 bounds = UIScreen.main.bounds 是问题,但我尝试将其更改为的所有内容都会导致错误

标签: ios swift pdf-generation share


【解决方案1】:

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

因此,要处理 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()!) 找到 HERE 或view.layer.draw(in: UIGraphicsGetCurrentContext()!) 在同一页面上找到

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多