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

截取本区域(self.view):

1
2
3
4
5
UIGraphicsBeginImageContext (CGSizeMake (self.view.frame.size.width, self.view.frame.size.height ) );
     [self.view.layer renderInContext :UIGraphicsGetCurrentContext ( ) ];
    UIImage  *viewImage  = UIGraphicsGetImageFromCurrentImageContext ( );
    UIGraphicsEndImageContext ( );
    UIImageWriteToSavedPhotosAlbum (viewImage,  nilnilnil );

全屏截图:

1
2
3
4
5
6
UIWindow  *screenWindow  =  [ [UIApplication sharedApplication ] keyWindow ];
    UIGraphicsBeginImageContext (screenWindow.frame.size );
     [screenWindow.layer renderInContext :UIGraphicsGetCurrentContext ( ) ];
    UIImage  *viewImage  = UIGraphicsGetImageFromCurrentImageContext ( );
    UIGraphicsEndImageContext ( );
    UIImageWriteToSavedPhotosAlbum (viewImage,  nilnilnil );

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

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

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

截图另存为指定名字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 ];
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值