zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    个人浏览器安装的插件
    angularjs 1 Failed to read the 'selectionStart' property from 'HTMLInputElement':
    git 配置用户名和邮箱
    修改Atom 隐藏.gitignore忽略的文件/文件夹的配置
    Ubuntu 安装php_intl 扩展
    yii2 ./yii command : No such file or directory
    vagrant yii2 Exception 'yiidbException' with message 'SQLSTATE[HY000] [2002]
    [转载]Ubuntu 14.04设置固定ip
    [转载]删除所有的.svn文件夹
    Centos7.2正常启动关闭CDH5.16.1
  • 原文地址:https://www.cnblogs.com/greywolf/p/3160369.html
Copyright © 2011-2022 走看看