iOS截屏

截屏方法有很多中,这里只写一种最简单的,以及什么样的情况下用什么参数

具体的主要函数如下:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

第一个函数:

UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) 

size 画布的大小
opaque 是否有透明度
scale 画布的比率,这个参数关系到当前所截图片的清晰度一般设置为当前屏幕的比率 [UIScreen mainScreen].scale

如果不关心这些,也可以直接使用

UIGraphicsBeginImageContext(self.view.bounds.size)

但涉及到分享的时候最好使用options函数;

封装了一下,具体写法:

+ (UIImage*)mcScreenShotWithObject:(id)target
                      shotSize:(CGSize)size
                      isOpaque:(BOOL)opaque
                        isSave:(BOOL)isSave
                      saveName:(NSString*)name{
UIGraphicsBeginImageContextWithOptions(size, opaque, [UIScreen mainScreen].scale);
if ([target isKindOfClass:[UIView class]]) {
    UIView *view = (UIView*)target;
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
}else if ([target isKindOfClass:[UIViewController class]]){
    UIViewController *viewController = (UIViewController*)target;
    [viewController.view.layer renderInContext:UIGraphicsGetCurrentContext()];
}else{
    NSAssert([target isKindOfClass:[UIView class]] || [target isKindOfClass:[UIViewController class]], @"数据源有问题,请检查并更新!");
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

if (isSave) {
    NSString * filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"DocumentPath"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
    [fileManager createFileAtPath:[filePath stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@.png",(name && ![name isEqualToString:@""])?name:@"image"]] contents:UIImagePNGRepresentation(image) attributes:nil];
    NSLog(@"====>>%@ Path:%@%@",(name && ![name isEqualToString:@""])?name:@"image", filePath,[NSString stringWithFormat:@"/%@.png",(name && ![name isEqualToString:@""])?name:@"image"]);
}

    return image;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容