2013年7月1日 星期一

iOS 撷图方法

来自 http://blog.csdn.net/monsterguaishou/article/details/8512180

截取本区域(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 = [[NSBundlebundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@”Tink”ofType:@”aiff”];SystemSoundID soundID;AudioServicesCreateSystemSoundID((CFURLRef)[NSURLfileURLWithPath:path], &soundID);AudioServicesPlaySystemSound(soundID);// we don’t dispose of the sound to keep the sound in the cache forthe next timeAudioServicesDisposeSystemSoundID(soundID);

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

沒有留言: