直接上的code:
///
/// @param view 截屏的View
/// @param rect 截屏的范围
///
/// @return 截屏后的图片
- (UIImage *)cropScreenInView:(UIView *)view withRect:(CGRect)rect {
CGSize size = rect.size;
// 获取图形上下文
// 第二个参数: 是否透明
CGFloat scale = [UIScreen mainScreen].scale;
UIGraphicsBeginImageContextWithOptions(size, NO, scale);
CGContextRef context = UIGraphicsGetCurrentContext();
if (context == NULL) return nil;
// 将View绘制到图形上下文中
// iOS7+以后
[view drawViewHierarchyInRect:rect afterScreenUpdates:YES];
// 获取截屏图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 关闭位图上下文
UIGraphicsEndImageContext();
CGImageRef imageRef = newImage.CGImage;
// 这里可以设置想要截图的区域
CGRect f = CGRectMake(rect.origin.x, rect.origin.y, size.width * scale, size.height * scale);
CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, f);
UIImage *imgResult = [[UIImage alloc] initWithCGImage:imageRefRect];
CGImageRelease(imageRefRect);
return imgResult;
}