绘制 UIView 并转换为 UIImage
Draw UIView with transform into UIImage
使用 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
包括它的变换 and/or 它层的变换。我怎样才能做到这一点?我需要渲染一个缩放和旋转的 UIView
。
一个后备解决方案是将它的超级视图呈现为 UIImage
但为此我将不得不更改 UI 层次结构...
此问题有解决方法。用 "transformed view" 的 frame
将带有变换的 UIView
包装成另一个视图(没有变换)。将转换后的视图放在包装视图中的 .zero
位置并调用 drawHierarchy(in:)
(在包装视图上)。
或者在我的特定情况下,我需要绘制文本视图,最终我直接使用 Core Graphics 绘制了文本。
使用 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
包括它的变换 and/or 它层的变换。我怎样才能做到这一点?我需要渲染一个缩放和旋转的 UIView
。
一个后备解决方案是将它的超级视图呈现为 UIImage
但为此我将不得不更改 UI 层次结构...
此问题有解决方法。用 "transformed view" 的 frame
将带有变换的 UIView
包装成另一个视图(没有变换)。将转换后的视图放在包装视图中的 .zero
位置并调用 drawHierarchy(in:)
(在包装视图上)。
或者在我的特定情况下,我需要绘制文本视图,最终我直接使用 Core Graphics 绘制了文本。