本文共 3630 字,大约阅读时间需要 12 分钟。
截取本区域(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, nil, nil, nil ); |
全屏截图:
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, nil, nil, nil ); |
以上2种方法真机和模拟器都可以运行.在photo.app里可以看到照片
苹果最新开放的接口函数(全屏截图),已经有人试过了,不会reject:
1 2 3 4 5 | 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 ) . |
截图另存为指定名字:
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 ( ); *screenshotPNG = UIImagePNGRepresentation (screenshot ); *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES ); *documentsDirectory = [paths objectAtIndex : 0 ]; *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): 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, nil, nil, nil ); |
全屏截图:
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, nil, nil, nil); |
以上2种方法真机和模拟器都可以运行.在photo.app里可以看到照片
苹果最新开放的接口函数(全屏截图),已经有人试过了,不会reject:
1 2 3 4 5 | 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 ) . |
截图另存为指定名字:
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 ( ); *screenshotPNG = UIImagePNGRepresentation (screenshot ); *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES ); *documentsDirectory = [paths objectAtIndex : 0 ]; *error = nil; [screenshotPNG writeToFile : [documentsDirectory stringByAppendingPathComponent : @ "screenshot.png" ] options :NSAtomicWrite error :&error ]; |
转载地址:http://ciosi.baihongyu.com/