• iPhone/iPad全屏截图与区域截图的几种方法


    本文由社区会员taonavy分享

    截取本区域(self.view):

    UIGraphicsBeginImageContext(CGSizeMake(self.view.frame.size.width, self.view.frame.size.height));
        [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

    全屏截图:

    UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];
        UIGraphicsBeginImageContext(screenWindow.frame.size);
        [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

    以上2种方法真机和模拟器都可以运行.在photo.app里可以看到照片


    苹果最新开放的接口函数(全屏截图),已经有人试过了,不会reject:

    CGImageRef UIGetScreenImage(); 
        CGImageRef img = UIGetScreenImage();
        UIImage* scImage=[UIImage imageWithCGImage:img];
        UIImageWriteToSavedPhotosAlbum(scImage, nil, nil, nil);
    It still works,but only on-device (not in simulator) .

    截图另存为指定名字:

    UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];

    UIGraphicsBeginImageContext(screenWindow.frame.size);
    [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData *screenshotPNG = UIImagePNGRepresentation(screenshot);

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSError *error = nil;
    [screenshotPNG writeToFile:[documentsDirectory stringByAppendingPathComponent:@"screenshot.png"] options:NSAtomicWrite error:&error];

    部分代码来自:
    http://stackoverflow.com/questions/692464/emailing-full-screen-of-iphone-app

    没有ipad真机截图发布app的可以用此方法做个透明按钮点,哈哈.

    截取本区域(self.view):

    UIGraphicsBeginImageContext(CGSizeMake(self.view.frame.size.width, self.view.frame.size.height));
        [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

    全屏截图:

    UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];
        UIGraphicsBeginImageContext(screenWindow.frame.size);
        [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

    以上2种方法真机和模拟器都可以运行.在photo.app里可以看到照片


    苹果最新开放的接口函数(全屏截图),已经有人试过了,不会reject:

    CGImageRef UIGetScreenImage(); 
        CGImageRef img = UIGetScreenImage();
        UIImage* scImage=[UIImage imageWithCGImage:img];
        UIImageWriteToSavedPhotosAlbum(scImage, nil, nil, nil);
    It still works,but only on-device (not in simulator) .

    截图另存为指定名字:

    UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];

    UIGraphicsBeginImageContext(screenWindow.frame.size);
    [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData *screenshotPNG = UIImagePNGRepresentation(screenshot);

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSError *error = nil;
    [screenshotPNG writeToFile:[documentsDirectory stringByAppendingPathComponent:@"screenshot.png"] options:NSAtomicWrite error:&error];

    部分代码来自:
    http://stackoverflow.com/questions/692464/emailing-full-screen-of-iphone-app 

    社区原贴:http://www.cocoachina.com/bbs/read.php?tid=114736

  • 相关阅读:
    将数组转换为对象
    react常见组件问题Can't perform a React state update on an unmounted component
    React定位到滚动条底部
    React使用定时器interval
    CSS 如何做到隐藏滚动条的同时可以滚动
    css实现字母或数字强制换行
    如何让div的滚动条在上下左右都出现
    js学习
    JavaScript介绍
    前端跨域
  • 原文地址:https://www.cnblogs.com/greywolf/p/3160369.html
Copyright © 2020-2023  润新知