本工程实现截取当前屏幕功能。

(1)新建一个“Single View Application”工程,取名为“Screenshot”:

(2)点击工程文件,切换到“Build Phase”,展开“Link Binary With Libraries”,点击“+”号添加“QuartzCore.framework”框架:

(3)为让效果更明显,我们可以自定义背景图。为养成一种良好的习惯,我们在项目文件夹中新建一个名为“Resource”的资源文件夹,用于存放我们添加到项目的图片资源。向其中导入一张图片。

(4)右键单击,在工程目录中选择我们刚新建的文件夹。


(5)设置背景图为我们刚导入的图片。我们只作测试用,所以我们可以在“ViewDidLoad”中设置背景衅图。

在ViewController.m文件中导入头文件:

#import"QuartzCore/QuartzCore.h"


在头文件中添加以下两个函数:

/** 设置背景 */- (void)setBgImg; /** 截屏 */- (void)screenshot;


在m文件中实现上面这两个函数:

- (void)setBgImg{ UIImageView *imgV = [[UIImageView alloc] initWithImage:[UIImage p_w_picpathNamed:@"QQ20130728-7.png"]]; [self.view addSubview:imgV];}- (void)screenshot{ //将整个self.view大小的图层形式创建一张图片p_w_picpath UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage*p_w_picpath=UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //然后将该图片保存到图片库 UIImageWriteToSavedPhotosAlbum(p_w_picpath,self,nil,nil);}


(6)最后在“ViewDidLoad”函数中引用这两个函数:

- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self setBgImg]; [self screenshot];}


(7)在运行程序之前,我们先打开模拟器的图库看看看:


如果我们从未保存图片到图库,则可见如上图所示。


(8)这时我们运行程序,程序显示了我们自定义的图片。然后再来看图库:


可见截屏功能已经实现。


附件:http://down.51cto.com/data/2363232