版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30963589/article/details/84849061
开发的时候我们会遇到截屏的功能,这里介绍一个简单的把UIView转化为UIImage的功能以此实现简单的截屏功能:
我们为UIIView做一个扩展:
Swift:
//将当前视图转为UIImage
func asImage() -> UIImage {
if #available(iOS 10.0, *) {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
return renderer.image { rendererContext in
layer.render(in: rendererContext.cgContext)
}
} else {
UIGraphicsBeginImageContextWithOptions(CGSize(width: bounds.width, height: bounds.height), false, 0.0)
let context: CGContext = UIGraphicsGetCurrentContext()!
layer.render(in: context)
context.restoreGState()
let theImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return theImage
}
}
OC:
- (UIImage*) imageWithUIView:(UIView*) view{
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
// UIGraphicsBeginImageContext(view.bounds.size); 或
UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width, view.frame.size.height), NO, 0.0)
CGContextRef currnetContext = UIGraphicsGetCurrentContext();
[view.layer renderInContext:currnetContext];
CGContextRestoreGState(context);
// 从当前context中创建一个改变大小后的图片
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
// 使当前的context出堆栈
UIGraphicsEndImageContext();
return image;
}