没有找到UIView直接指定区域截图的方法,本文实现的方法是先把UIView整个截图出来,然后剪裁获取指定的区域
UIView截图
let scale:CGFloat = UIScreen.main.scale // 设置屏幕倍率可以保证截图的质量
UIGraphicsBeginImageContextWithOptions( self.frame.size, true, scale)
self.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
图片剪裁
// 假设要截取 Rect(100,100,100,100)的图片 各个值要 * 前面设置的scale 图片转为CGImage的时候会按这个比例放大 具体原因未知
let rect = CGRect.init(x: 100 * scale, y: 100 * scale, width: 100 * scale, height: 100 * scale)
let imageRef = image?.cgImage;
let subImageRef = imageRef!.cropping(to: rect);
return UIImage(cgImage: subImageRef!)