参考链接:http://www.dapps.net/dev/iphone/iphone-ipad-screenshots-tips.html
截取本区域(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 ( ); NSData *screenshotPNG = UIImagePNGRepresentation (screenshot ); NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES ); NSString *documentsDirectory = [paths objectAtIndex : 0 ]; NSError *error = nil; [screenshotPNG writeToFile : [documentsDirectory stringByAppendingPath |