iOS 学习笔记一【屏幕截图,并显示当前View】

时间:2022-09-26 15:24:24

iOS 学习笔记一【屏幕截图,并显示当前View】

iOS 学习笔记一【屏幕截图,并显示当前View】

// 直接上代码:

 

//

// 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