// 直接上代码:
//
// ViewController.h
// 屏幕截图测试
//
// Created by 博爱之家 on 15/11/11.
// Copyright © 2015年 博爱之家. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
NSData *imageData;
}
@end
*************************************
//
// ViewController.m
// 屏幕截图测试
//
// Created by 博爱之家 on 15/11/11.
// Copyright © 2015年 博爱之家. All rights reserved.
//
#import "ViewController.h"
//宏定义
//当前设备的屏幕宽度
#define KSCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
//当前设备的屏幕高度
#define KSCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height
@interface ViewController ()
@property (nonatomic, strong) UILabel *testlabel;
@property (nonatomic, strong) UIButton *testButton;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.title = @"截屏测试";
self.view.backgroundColor = [UIColor whiteColor];
self.testlabel = [UILabel new];
self.testlabel.frame = CGRectMake((KSCREEN_WIDTH-200)/2 , 100, 200, 50);
self.testlabel.text = @"截屏测试";
self.testButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.testButton.frame = CGRectMake((KSCREEN_WIDTH-200)/2 , 200, 200, 50);
[self.testButton setTitle:@"点击截屏" forState:UIControlStateNormal];
self.testButton.backgroundColor = [UIColor purpleColor];
[self.testButton addTarget:self action:@selector(clickBUutton:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.testlabel];
[self.view addSubview:self.testButton];
}
- (IBAction)clickBUutton:(id)sender
{
NSLog(@"开始");
[self saveScreenShotsView];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = CGRectMake(100, 400, 200, 200);
imageView.backgroundColor = [UIColor greenColor];
imageView.image = [UIImage imageWithData:imageData];
[self.view addSubview:imageView];
}
// 保存图片
- (void)saveScreenShotsView
{
UIImage *image = [self getNormalImage:self.view];
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
[self saveToDisk:image];
NSLog(@"结束");
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
#pragma mark - 获取屏幕截图
- (UIImage *)getNormalImage:(UIView *)view
{
UIGraphicsBeginImageContext(CGSizeMake(KSCREEN_WIDTH, KSCREEN_HEIGHT));
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
#pragma mark - 保存到硬盘中
- (void)saveToDisk:(UIImage *)image
{
NSString *dirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSLog(@"保存路径: %@", dirPath);
NSString *path = [NSString stringWithFormat:@"%@/pic_%f.png",dirPath,[NSDate timeIntervalSinceReferenceDate]];
imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
[imageData writeToFile:path atomically:YES];
NSLog(@"保存路径: %@", path);
NSString *imagePath = [[path componentsSeparatedByString:@"/"] lastObject];
NSLog(@"保存路径2imagePath: %@", imagePath);
NSLog(@"保存完毕");
}
@end