用代码写的用于ios中的屏幕截图,有时候我们在应用中需要加入屏幕截图的功能,比如说游戏的最高纪录,玩家刷新了游戏的纪录用于纪录一些具有历史性的、里程碑式的一些小事情……
所以这次分享一个屏幕截图的方法,可能比较常用吧……?
先摆上一张图在UIview上面,截图的方法实现慢慢来,不急,我这次没有吧截图的方法提取出来,就直接堆在VIewController里面了,不要问为什么,懒,任性……☺️
- (void)viewDidLoad {
[super viewDidLoad];
//首先创建一张照片来做标志,方便此后查证是否有完成屏幕截图的功能。
UIImage* image = [UIImage imageNamed:@"image"];
UIImageView* imageView = [[UIImageView alloc] initWithImage:image];
//设置图片缩放的倍数
float scale =self.view.frame.size.width / image.size.width;
//设置上下的间隔
float margin = (self.view.frame.size.height - image.size.height*scale)*0.5;
//设置imageView的位置尺寸
imageView.frame = CGRectMake(0, margin, image.size.width*scale, image.size.height*scale);
//加入控制器的view中
[self.view addSubview:imageView];
}
然后就在viewController里面直接实现屏幕触控的touch方法了,在里面实现屏幕截图的方法,运行的时候只要点一下屏幕就可以保存图片在指定的路径了。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//实现屏幕的点击方法,并设置位图上下文的尺寸为当前屏幕的大小
UIGraphicsBeginImageContext([UIScreen mainScreen].bounds.size);
//将当前的位图上下文渲染为当前屏幕的内容
//我们屏幕上之所以能看到东西,都是因为有layer!(这句话怎么听得这么熟悉?!对,写UIWindow的时候我也是这么写得……)
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
//这个方法不是获取图形上下文的吗?!!!
//这么说也没错,在drawRect里面获取的是图形上下文,而在其他地方获得的是位图上下文。
//创建一个UIImage获得当前位图上下文的内容
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
//结束位图上下文的编辑
UIGraphicsEndImageContext();
//定义一个NSData对象将UIImage对象转换成png图像
NSData* PNGimage = UIImagePNGRepresentation(image);
[PNGimage writeToFile:@"/Users/housn-k/Desktop/getScreenContext.png" atomically:YES];
}
运行效果:
博客代码