ios屏幕截屏复制代码就可使用
1 首先:导入框架 QuartzCore.frameWork
2 在程序中导入
#import<QuartzCore/QuartzCore.h>
定义一个全局变量
static int ScreenshotIndex=0;
@property (nonatomic, strong)NSString *ScreenshotsPickPath;
3 具体代码
-(void)ScreenShot{
//这里因为我需要全屏接图所以直接改了
// UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 960), YES, 0); //设置截屏大小
UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height), YES, 0); //设置截屏大小 这里设置的是跟屏幕大小
[[self.view layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = viewImage.CGImage;
// CGRect rect = CGRectMake(166, 211, 426, 320);//这里可以设置想要截图的区域
CGRect rect = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);//这里可以设置想要截图的区域
CGImageRef imageRefRect =CGImageCreateWithImageInRect(imageRef, rect);
UIImage *sendImage = [[UIImage alloc] initWithCGImage:imageRefRect];
UIImageWriteToSavedPhotosAlbum(sendImage, nil, nil, nil);//保存图片到照片库
NSData *imageViewData = UIImagePNGRepresentation(sendImage);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pictureName= [NSString stringWithFormat:@"screenShow_%d.png",ScreenshotIndex];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:pictureName];
NSLog(@"截屏路径打印: %@", savedImagePath);
//这里我将路径设置为一个全局String,这里做的不好,我自己是为了用而已,希望大家别这么写
[self SetPickPath:savedImagePath];
[imageViewData writeToFile:savedImagePath atomically:YES];//保存照片到沙盒目录
CGImageRelease(imageRefRect);
ScreenshotIndex++;
}
//设置路径
- (void)SetPickPath:(NSString *)PickImage {
_ScreenshotsPickPath = PickImage;
}
//获取路径<这里我就直接用于邮件推送的代码中去了,能达到效果,但肯定有更好的写法>
- (NSString *)GetPickPath {
return _ScreenshotsPickPath;
}