使用UIView
和UIImage
方法将drawHierarchy(in: afterScreenUpdates:)
绘制到CALayer.render
中很容易,例如:
let renderer = UIGraphicsImageRenderer(size: size)
return renderer.image { rendererContext in
view.drawHierarchy(in: view.frame, afterScreenUpdates: true)
}
但是我想渲染UIView
,包括其变换和/或其图层的变换。我该如何实现?我需要渲染经过缩放和旋转的UIView
。
一个后备解决方案是将其超级视图呈现为UIImage
,但为此,我将不得不更改UI层次结构...
答案 0 :(得分:1)
此问题有解决方法。使用转换后的视图中的UIView
将带有转换的frame
包装到另一个视图中(不进行转换)。将转换后的视图放在包装器视图的.zero
位置,然后调用drawHierarchy(in:)
(在包装器视图上)。
或者在我的特定情况下,我需要绘制文本视图,最后我直接使用Core Graphics绘制了文本。