本文共 1284 字,大约阅读时间需要 4 分钟。
突然有个需求要求在程序中截图,调查实验后后在此分享一下。
先添加头文件
#import <QuartzCore/QuartzCore.h>
这里使用两种方法测试
一个是私有api的UIGetScreenImage()
一个是UIGraphics的方法
- (UIImage*) takeShot
{ //private api and device only 不支持模拟器哦extern CGImageRef UIGetScreenImage();//需要先extern
UIImage *image = [UIImage imageWithCGImage:UIGetScreenImage()]; UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil); return image; } - (void)viewDidLoad { [super viewDidLoad]; //plan A. self.view.backgroundColor = [UIColor redColor]; UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; UIGraphicsBeginImageContext(screenWindow.frame.size); [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil); //plan B:private api and device only #if !TARGET_IPHONE_SIMULATOR self.view.backgroundColor = [UIColor greenColor]; [self performSelector:@selector(takeShot) withObject:nil afterDelay:1]; #elif self.view.backgroundColor = [UIColor clearColor]; #endif }图片在相册中查看,使用之后的效果比较,使用itouch 4,高清屏幕。
UIGraphics的图片比较模糊,感觉是按像素画出来的结果
官方的api果然不是盖得,高清屏也不在话下,相当清晰。
机器不在身边,就不上图了。
听说4.0后就公开,不在reject了,没试过。