绘制 UIView 并转换为 UIImage
Posted
技术标签:
【中文标题】绘制 UIView 并转换为 UIImage【英文标题】:Draw UIView with transform into UIImage 【发布时间】:2018-07-31 15:18:27 【问题描述】:使用drawHierarchy(in: afterScreenUpdates:)
和CALayer.render
方法很容易将UIView
绘制成UIImage
,例如:
let renderer = UIGraphicsImageRenderer(size: size)
return renderer.image rendererContext in
view.drawHierarchy(in: view.frame, afterScreenUpdates: true)
但我想渲染UIView
,包括它的变换和/或其层的变换。我怎样才能做到这一点?我需要渲染一个经过缩放和旋转的UIView
。
一种备用解决方案是将其超级视图呈现为UIImage
,但为此我将不得不更改 UI 层次结构...
【问题讨论】:
【参考方案1】:有解决此问题的方法。将带有变换的UIView
包装到另一个带有“变换视图”的frame
的视图(没有变换)。将转换后的视图放在包装视图中的.zero
位置并调用drawHierarchy(in:)
(在包装视图上)。
或者在我的特定情况下,我需要绘制文本视图,最后我直接使用 Core Graphics 绘制文本。
【讨论】:
以上是关于绘制 UIView 并转换为 UIImage的主要内容,如果未能解决你的问题,请参考以下文章
iOS:如何将 UIView 的自绘内容转换为图像(普遍的通用解决方案返回空白图像)?