【问题标题】:How to capture pictures of the whole scroll view without showing the view to the user如何在不向用户显示视图的情况下捕获整个滚动视图的图片
【发布时间】:2019-02-27 12:08:45
【问题描述】:

我正在我的应用程序中实现打印功能,我希望将屏幕图片发送到打印机 SDK。

我正在创建一个虚拟视图,在该视图上我有一个滚动视图,并且在这个滚动视图上我有一个列表,列出了要打印的产品列表,添加为子视图。此滚动视图的高度大于 iPad 的屏幕尺寸,因为列表很大。

我想用整个列表(产品不可见和不可见或 UIScreen 的列表)捕获整个 Scroll View 的图片。另外,我不希望用户可以看到此视图。一切都应该在后台发生。

【问题讨论】:

标签: ios swift uiscrollview


【解决方案1】:

您可以在滚动视图中渲染视图并获得UIImage

在下面的代码中,视图viewInScrollViewUIScrollView 中的子视图,并且所有元素都存在于该视图中。

UIGraphicsBeginImageContext(scrollView.contentSize)      
viewInScrollView.layer.renderInContext(UIGraphicsGetCurrentContext())
var myImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

myImage 变量将具有整个scrollView 的图像。

【讨论】:

  • 你不应该将大小设置为与 contentView 相同的大小,因为内容可能大于视图大小
  • 抱歉更新代码,忘记更改那部分。谢谢
  • 如何在不向用户呈现视图的情况下执行此操作?如果我确实隐藏了视图,则会发生此 UIGraphicsGetCurrentContext 的崩溃。
  • @akshaytule 这里是一个相关的问题,stackoverflow.com/questions/11061850/…,我希望它能回答你的问题。在接受的解决方案中,该人说您可以从超级视图中删除而不是隐藏。
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多