在 UIGraphicsImageRenderer 中绘制之前如何旋转对象?

How do I rotate objects before it is drawn within UIGraphicsImageRenderer?

    let renderer = UIGraphicsImageRenderer(size: CGSize(width: 500, height: 500))
    let image = renderer.image { context in
        let size = renderer.format.bounds.size
        UIColor.red.setFill()
        context.cgContext.fillEllipse(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
        let x = 300 //center
        let y = 100 //center
        let w = 200
        let h = 60
        let r = 5.41 //radians
        UIColor.white.setFill()
        context.cgContext.fill(CGRect(x: x - w / 2, y: y - h / 2, width: w, height: h))
    }

结果是这样的:

如何在上下文中绘制之前旋转我的白色矩形,旋转中心位于矩形的中间?

您可以使用以下 api 旋转上下文: https://developer.apple.com/documentation/coregraphics/cgcontext/1456228-rotate

这就是您的示例的样子:

            // applied 5 rectangles to visualize the rotation origin.
            for i in 0...5 {
                let r: CGFloat = 0.1 * CGFloat(i) //radians
                context.cgContext.rotate(by: r)
                UIColor.white.setFill()
                context.cgContext.fill(CGRect(x: x - w / 2, y: y - h / 2, width: w, height: h))
            }

请注意,旋转发生在上下文的原点周围。如果您想要一个不同的中心,您可能需要先申请翻译(translateBy(x:y:) - 详情请参阅苹果文档)。