@interface CaptureViewController ()

@property (nonatomic, strong) UIImageView *backgrounView; //控制器背景

@property (nonatomic, strong) UIView *captureView; //整个半透明图层

@property (nonatomic, strong) UIView *alertview; // 图层中间的view

@property (nonatomic, strong) UIImageView *captureImageView; //截屏后展示imageView

@property (nonatomic, strong) UIImage *captureImage; //截屏图片

@end

- (void)viewDidLoad {

[super viewDidLoad];

self.title = @"截屏";

[self initAllViews];

}

- (void)initAllViews { //设置背景图片

self.backgrounView = [[UIImageView alloc]init];

[self.backgrounView setImage:[UIImage imageNamed:@"背景图片.jpg"]];

[self.view addSubview:self.backgrounView];

WeakSelf(weakSelf);

[self.backgrounView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(weakSelf.view);

}];

}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //在这不创建按钮 使用系统的触摸事件

//开启上下文(开始绘制图片)

UIGraphicsBeginImageContext(self.view.frame.size);

//获取上下文(绘制内容)

CGContextRef context = UIGraphicsGetCurrentContext();

//把控制器的view的内容画到上下文当中

[self.view.layer renderInContext:context];

//从上下文当中生成一张图片

self.captureImage = UIGraphicsGetImageFromCurrentImageContext();

//关闭上下文(绘制结束)

UIGraphicsEndImageContext();

self.captureView = [[UIView alloc]init];

[self.captureView setFrame: [UIScreen mainScreen].bounds];

//应用这种形式设置透明度

self.captureView.backgroundColor = [UIColor colorWithRed:255 / 255.0 green:255 / 255.0 blue:255 / 255.0 alpha:0.5];

/*

//这个种方法设置透明度 会影响子视图的透明度

self.captureView.backgroundColor = [UIColor blackColor];

self.captureView.alpha = 0.5;

*/

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapgesture)];

tap.numberOfTouchesRequired = 1;

tap.numberOfTapsRequired = 1;

[self.captureView addGestureRecognizer:tap];

[[UIApplication sharedApplication].keyWindow addSubview:self.captureView];

[self.captureView addSubview:self.alertview];

self.captureImageView = [[UIImageView alloc]init];

[self.alertview addSubview: self.captureImageView];

[self.captureImageView setImage:self.captureImage];

WeakSelf(weakSelf);

[self.alertview mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(weakSelf.captureView).offset(84);

make.left.equalTo(weakSelf.captureView).offset(20);

make.right.equalTo(weakSelf.captureView).offset(-20);

make.bottom.equalTo(weakSelf.captureView).offset(-64);

}];

[self.captureImageView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(weakSelf.alertview);

}];

}

- (void)tapgesture { //移除视图

[self.captureView removeFromSuperview];

}

iOS 点击按钮截屏的更多相关文章

  1. iOS中正确的截屏姿势

    昨天写了个用到截屏功能的插件,结果问题不断,今天终于解决好了,把debug过程中所有尝试过的截屏方法都贴出来吧- 第一种 这是iOS 3时代开始就被使用的方法,它被废止于iOS 7.iOS的私有方法, ...

  2. ios摇一摇截屏代码

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  3. iOS - Quartz 2D 手势截屏绘制

    1.绘制手势截屏 具体实现代码见 GitHub 源码 QExtension QTouchClipView.h @interface QTouchClipView : UIView /** * 创建手势 ...

  4. iOS中点击按钮跳转到外部浏览器和内部打开

    如图所示,需要实现点击一个按钮,跳转到指定网页: -(void)pushBtnCellClickDeleate{ NSLog(@"跳转"); //在APP内部打开指定网页 UIWe ...

  5. iOS中点击按钮复制指定内容

    话不多说,直接上图和代码:

  6. iOS - 点击按钮实现简单的复制功能

    UIPasteboard使用 基本使用: - (void)copyClick { UIPasteboard *pab = [UIPasteboard generalPasteboard]; pab.s ...

  7. 在ios端点击按钮闪烁解决方法(小tips)

    在ios端,safari浏览器上触发click事件有300ms的延迟响应,为touch添加的样式会和click冲突而出现闪烁问题 在safari中触摸事件的相应顺序如下: touchstart --& ...

  8. iOS点击按钮第二次不能旋转View

    原因: 用CGAffineTransformMakeRotation,每次旋转都要在之前最后的角度基础之上再转才有效果. - (void)clickAction: (UIButton *)button ...

  9. IOS 点击按钮 光环 冲击波效果

    UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(0, 0) radius:ROUND_WIDTH/2 - ...

随机推荐

  1. Linux学习笔记之档案权限与目录配置

    一. 档案权限与目录配置用户的属性信息: /etc/passwd用户的密码信息: /etc/shadow组的信息:     /etc/group 每个用户都有唯一的UID供系统识别sudo -i 输入 ...

  2. Git--03 git分支

    目录 Git分支 1.新建testing分支 2.合并分支 3.合并冲突 4.删除分支 Git标签使用 1.查看标签 02.删除标签 Git分支 ​ 分支即是平行空间,假设你在为某个手机系统研发拍照功 ...

  3. MySQL06-- mysql索引

    目录 一.索引介绍 1.什么是索引 2.索引类型介绍 3.索引管理 5.索引操作 6.前缀索引 7.联合索引 8.创建索引总结: 一.索引介绍 1.什么是索引 1)索引就好比一本书的目录,它能让你更快 ...

  4. java解析xml(使用jdom解析xml)

    第一步: 装入jar包:下载地址:http://www.jdom.org/downloads/index.html 第二步: 在项目中加入jar包 jdom-2.06.jar 放入lib中 第三步: ...

  5. Maven仓库配置淘宝Maven镜像仓库

    settings.xml文件里面配置 <mirrors> <mirror>       <id>alimaven</id>       <name ...

  6. 牛客网NOIP赛前集训营-提高组(第六场)B-选择题

    题目描述 有一道选择题,有 a,b,c,d 四个选项. 现在有 n 个人来做这题,第 i 个人有 pi,j 的概率选第 j 个选项. 定义\(cnt(x)\)为选第$ x $个选项的人数. 令\(mx ...

  7. Spring---Spring Aware

    1.概述 1.1.Spring中的  所有Bean  对Spring容器的存在  是没有意识的(即你可以将容器换成别的容器,这样使用容器与Bean之间的耦合度很低): 但在实际项目中,不可避免的要用到 ...

  8. Web项目改名的带来的404not found问题

    为了保留上一次编辑的billsys web项目,把项目复制一份到同一个工作空间后,对原来项目名进行了重命名,如右图: 结果再去访问,一直报404错误 解决思路如下: 其实仔细观察,会在项目部署界面发现 ...

  9. wangeditor 粘贴word内容带样式

    这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用 后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下) ...

  10. <三剑客> 老三:grep命令用法

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...