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

  • 相关阅读:
    .net Delegate
    Kaprekar constant(卡普雷卡尔黑洞)
    How to get URL and QueryString value in an ASP.NET page
    Jquery and ashx achieve login of ajax
    MAC 开发笔记——Objective C 语法之Category和Extension
    MAC 开发笔记 - ObjectiveC 语法之selector
    肮脏的选择
    MAC Air 使用手记
    MAC 开发笔记——Objective C 之 基础设计模式
    太平洋战争——比B.o.B还是差了点
  • 原文地址:https://www.cnblogs.com/greywolf/p/3160369.html
Copyright © 2011-2022 走看看