绘制 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 绘制了文本。