OS开发UI篇—Quartz2D使用(截屏)
一、简单说明
在程序开发中,有时候需要截取屏幕上的某一块内容,比如捕鱼达人游戏。如图:
完成截屏功能的核心代码:
- (void)renderInContext:(CGContextRef)ctx;
调用某个view的layer的renderInContext:方法即可
二、代码示例
storyboard界面搭建:
代码:
1 // 2 // YYViewController.m 3 // 01-截屏 4 // 5 // Created by apple on 14-6-12. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h" 10 #import "MBProgressHUD+NJ.h" 11 12 @interface YYViewController () 13 @property (weak, nonatomic) IBOutlet UIView *contentView; 14 - (IBAction)BtnClick:(UIButton *)sender; 15 16 @end 17 18 @implementation YYViewController 19 20 - (void)viewDidLoad 21 { 22 [super viewDidLoad]; 23 } 24 25 - (IBAction)BtnClick:(UIButton *)sender { 26 27 //延迟两秒保存 28 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 29 //获取图形上下文 30 // UIGraphicsBeginImageContext(self.view.frame.size); 31 UIGraphicsBeginImageContext(self.contentView.frame.size); 32 //将view绘制到图形上下文中 33 34 // [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 35 [self.contentView.layer renderInContext:UIGraphicsGetCurrentContext()]; 36 37 38 //将截屏保存到相册 39 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 40 41 UIImageWriteToSavedPhotosAlbum(newImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 42 }); 43 } 44 45 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo 46 { 47 if (error) { 48 [MBProgressHUD showError:@"保存失败,请检查是否拥有相关的权限"]; 49 }else 50 { 51 // [MBProgressHUD showMessage:@"保存成功!"]; 52 [MBProgressHUD showSuccess:@"保存成功!"]; 53 } 54 } 55 56 @end
1 // 3.从上下文中取出绘制好的图片 2 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 3 4 NSData *data = UIImagePNGRepresentation(newImage); 5 6 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"abc.png"]; 7 NSLog(@"%@", path); 8 [data writeToFile:path atomically:YES];
1 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo 2 { 3 if (error) { 4 [MBProgressHUD showError:@"保存失败,请检查是否拥有相关的权限"]; 5 }else 6 { 7 // [MBProgressHUD showMessage:@"保存成功!"]; 8 [MBProgressHUD showSuccess:@"保存成功!"]; 9 } 10 }
转载于:https://www.cnblogs.com/zengshuilin/p/5756527.html
OS开发UI篇—Quartz2D使用(截屏)相关推荐
- iOS开发UI篇—Quartz2D使用(绘图路径)
iOS开发UI篇-Quartz2D使用(绘图路径) 一.绘图路径 A.简单说明 在画线的时候,方法的内部默认创建一个path.它把路径都放到了path里面去. 1.创建路径 cgmutablepat ...
- iOS开发UI篇—Quartz2D简单使用(二)
iOS开发UI篇-Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...
- iOS开发UI篇—Quartz2D使用(信纸条纹)
iOS开发UI篇-Quartz2D使用(信纸条纹) 一.前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺. 1 #import "YYViewCon ...
- OS开发UI篇—popoverController使用注意
iOS开发UI篇-popoverController使用注意 一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. 1 //1.新建一个内容控制器2 YYMenuViewContr ...
- OS开发UI篇—核心动画(基础动画)
文顶顶 最新博文发布地址:花田半亩(wendingding.com) iOS开发UI篇-核心动画(基础动画) iOS开发UI篇-核心动画(基础动画) 一.简单介绍 CAPropertyAnimatio ...
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 决定绘制的输出目标(绘制到什么地方去?)(输出目标可以 ...
- OS开发UI篇—在UItableview中实现加载更多功能
一.实现效果 点击加载更多按钮,出现一个加载图示,三秒钟后添加两条新的数据. 二.实现代码和说明 当在页面(视图部分)点击加载更多按钮的时候,主页面(主控制器 ...
- iOS开发UI篇—Quartz2D使用(矩阵操作)
一.关于矩阵操作 1.画一个四边形 通过设置两个端点(长和宽)来完成一个四边形的绘制. 代码: 1 - (void)drawRect:(CGRect)rect 2 { 3 //画四边形 4 //获取图 ...
- android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...
先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...
最新文章
- 电子商务创造的第二次产业机会
- MIT新开发的 AI 模型有望改进恶性脑瘤治疗
- 关于onclick操作,影响按钮submit提交
- linux权限切换命令,Linux基础常用命令汇总(权限操作)
- 教你如何用Harbor 私有镜像仓库搭建
- ssh(Spring+Spring mvc+hibernate)——EmpDaoImpl.java
- 深度优先搜索(解题剑指Offer12、13)
- IBM T60网卡问题
- 10g的客户端从9i的服务器中导出数据时遇到上面的问题
- 详解 :Spring Boot 最核心的 3 个注解
- NoSQL数据库探讨- 为什么要用非关系数据库?
- 数学建模教程:CBA-基于关联规则的分类算法
- 银行管理系统实例(C语言版)
- 软件项目管理随谈(2)——项目合同问题
- 共享打印机服务器脱机状态,共享打印机脱机无法打印
- Spring Boot (Vue3+ElementPlus+Axios+MyBatisPlus +Spring Boot 前后端分离)
- 图片去水印在线-图片去水印无痕迹的app
- MATLAB experiment<3>
- 使用Python实现QQ窗口抖动
- java的int转long
热门文章
- python语言的三种数字类型_Python语言中的类型之数字类型--Python(10)
- pandas 替换 某列大于_Pandas使用总结
- python重命名csv文件_Python根据文件中选定的字符复制和重命名许多小csv文件
- android studio怎么设置log保存txt_【Stata写论文】log命令的使用和分析结果导出
- 翻牌抽奖 php,PHP+jQuery开发简单的翻牌抽奖实例
- cnn 预测过程代码_代码实践 | CNN卷积神经网络之文本分类
- u盘无媒体容量0无卷还能修吗_都2020年了,买新U盘没Type-C接口就过时了
- 载波聚合或双连接的方式进行_首发天玑1000+!iQOO Z1来了:5G+5G双卡双待、双WiFi 6...
- echart 高度 不用 不撑满_你担心的高度近视老了之后是这样的
- mysql结果行数_取得数据库结果集中的行数