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

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

iPhone程序截屏_第1张图片

(2)点击工程文件,切换到“Build Phase”,展开“Link Binary With Libraries”,点击“+”号添加“QuartzCore.framework”框架:iPhone程序截屏_第2张图片

iPhone程序截屏_第3张图片

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

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

iPhone程序截屏_第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)在运行程序之前,我们先打开模拟器的图库看看看:

iPhone程序截屏_第5张图片


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


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

iPhone程序截屏_第6张图片


可见截屏功能已经实现。