在屏幕外渲染 uiview 以捕获为 uiimage
Posted
技术标签:
【中文标题】在屏幕外渲染 uiview 以捕获为 uiimage【英文标题】:rendering a uiview offscreen to capture as a uiimage 【发布时间】:2020-07-15 21:35:09 【问题描述】:在我正在编写的个人 swift 应用程序中,我正在使用图表库来创建条形图并将它们显示在视图控制器中。到目前为止一切正常。现在我想创建其他图表,将它们捕获为 uiimage 以包含在 PDF 表单中...不显示图表。图表库创建了一个 uiview,我尝试了许多建议。 post1,还有这个post2,但运气不佳...
此代码有效,但强制我显示图表
resourceBarChart.updateDataEntries(dataEntries: resChartData, animated: false)
self.view.addSubview(resourceBarChart)
let myimage1 = self.view.subviews[1].image(withScale: .native)
省略uiview的显示
resourceBarChart.updateDataEntries(dataEntries: resChartData, animated: false)
let myimage = resourceBarChart.image(withScale: .native)
返回一个空的画布。我尝试使用隐藏的属性,但没有运气(也许正如预期的那样)。作为新手,我怀疑我忽略了一个微妙之处,并愿意接受任何建议
【问题讨论】:
【参考方案1】:在将视图捕获为 UIImage 之前尝试使用drawHierarcy
resourceBarChart.drawHierarchy(in: resourceBarChart.bounds, afterScreenUpdates: true)
【讨论】:
非常感谢...它成功了!虽然我收到了这条消息[Snapshotting] View (0x7fc7a0d398d0, myApp.BasicBarChart) drawing with afterScreenUpdates:YES inside CoreAnimation commit is not supported.
我不太确定该消息,也许您可以更改调用 drawHierarchy 函数的位置以上是关于在屏幕外渲染 uiview 以捕获为 uiimage的主要内容,如果未能解决你的问题,请参考以下文章