UIImage方面使用drawInRect填充?

我试图绘制scaleAspectFill像内容模式。

我发现如何使用AVFoundation使sacelAspectFit但我找不到scaleAspectFill。

如果我画水平图像,我不知道x值

image.draw(in: CGRect(origin: CGPoint.init(x: ?, y: 0), size: CGSize(width: displayWidth*(image.size.width/image.size.height), height: displayWidth))) 

假设你有一个名为image ,并且你想要在一个矩形的targetRect绘制它,这样它就可以在不扭曲的情况下填充矩形,你可以使用下面的代码:

 let aspect = image.size.width / image.size.height let rect: CGRect if targetRect.size.width / aspect > targetRect.size.height { let height = targetRect.size.width / aspect rect = CGRect(x: 0, y: (targetRect.size.height - height) / 2, width: targetRect.size.width, height: height) } else { let width = targetRect.size.height * aspect rect = CGRect(x: (targetRect.size.width - width) / 2, y: 0, width: width, height: targetRect.size.height) } image.draw(in: rect) 

注意:这不会剪裁图像,所以它会绘制在目标矩形的边缘之外。 如果要剪裁图像,请在绘制之前调用CGContextClipToRect(context, rect)

还要注意,与UIGraphics相比,核心graphics垂直轴是翻转的,从左下angular开始,而不是左上angular,因此您可能需要相应地翻转矩形和剪裁矩形。