我发现了许多将 UIView 转换为 UIImage 的示例,并且它们在视图布局后完美地工作等。即使在我的视图控制器中有很多行,其中一些行尚未显示在屏幕上,我也可以进行转换. 不幸的是,对于表格中太靠下的一些视图(因此尚未“绘制”),进行转换会产生一个空白的 UIImage。
我试过调用 setNeedsDisplay 和 layoutIfNeeded,但这些都不起作用。我什至尝试自动滚动表格,但也许我没有以某种方式(使用线程)确保滚动首先发生,从而在转换发生之前更新视图。我怀疑这是不可能的,因为我发现了各种各样的问题,但都没有找到解决方案。或者,我可以只在 UIImage 中重绘我的整个视图,而不需要 UIView 吗?
来自保罗哈德森的网站
使用任何未显示在屏幕上的 UIView(比如 UITableview 中位于屏幕底部下方的一行。
let renderer = UIGraphicsImageRenderer(size: view.bounds.size)
let image = renderer.image { ctx in
view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
}
Run Code Online (Sandbox Code Playgroud)