[英]How to convert UIView to UIImage with high resolution?
关于如何使用view.drawHierarchy(in:)
或view.layer.renderInContext()
将UIView转换为UIImage已有一些讨论。 但是,即使将比例尺设置为设备比例尺,结果仍然具有非常差的分辨率。 我想知道是否有一种方法可以将UIView转换为具有高分辨率和高质量的UIImage?
您需要在每个子视图上设置正确的内容比例。
extension UIView {
func scale(by scale: CGFloat) {
self.contentScaleFactor = scale
for subview in self.subviews {
subview.scale(by: scale)
}
}
func getImage(scale: CGFloat? = nil) -> UIImage {
let newScale = scale ?? UIScreen.main.scale
self.scale(by: newScale)
let format = UIGraphicsImageRendererFormat()
format.scale = newScale
let renderer = UIGraphicsImageRenderer(size: self.bounds.size, format: format)
let image = renderer.image { rendererContext in
self.layer.render(in: rendererContext.cgContext)
}
return image
}
}
创建图像:
let image = yourView.getImage()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.