IOS:关于iPhone/iPad全屏截图与区域截图的几种方法总结

截取本区域(self.view):

UIGraphicsBeginImageContext ( CGSizeMake ( self . view . frame . size . width , self . view . frame . size . height )) ;

  
 
[ self . view . layer   renderInContext : UIGraphicsGetCurrentContext ()] ;

  
 
UIImage  * viewImage  =  UIGraphicsGetImageFromCurrentImageContext () ;

  
 UIGraphicsEndImageContext();

  
 UIImageWriteToSavedPhotosAlbum(viewImagenilnilnil);

全屏截图:

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

  
 UIGraphicsBeginImageContext(screenWindow.frame.size);

  
 [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];

  
 UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

  
 UIGraphicsEndImageContext();

  
 UIImageWriteToSavedPhotosAlbum(viewImagenilnilnil);

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

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

CGImageRef   UIGetScreenImage ()

  
 
CGImageRef   img  =  UIGetScreenImage () ;

  
 UIImagescImage=[UIImage imageWithCGImage:img];

  
 UIImageWriteToSavedPhotosAlbum(scImagenilnilnil);

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,NSUserDomainMaskYES);
NSString *documentsDirectory = [paths objectAtIndex:0];

 
NSError *error = nil;
[screenshotPNG writeToFile:[documentsDirectorystringByAppendingPathComponent:@"screenshot.png"] options:NSAtomicWriteerror:&error];

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

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


 

//播放截图声音

NSString* path = [[NSBundle mainBundle]
pathForResource:@”photoShutter” ofType:@”caf”];

//NSString *path = [[NSBundle
bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@”Tink”
ofType:@”aiff”];

SystemSoundID soundID;

AudioServicesCreateSystemSoundID((CFURLRef)[NSURL
fileURLWithPath:path], &soundID);

AudioServicesPlaySystemSound(soundID);

// we don’t dispose of the sound to keep the sound in the cache for
the next time

AudioServicesDisposeSystemSoundID(soundID);

可以用这顺带播放一下声音

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值