iOS 点击按钮截屏
@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 点击按钮截屏的更多相关文章
- iOS中正确的截屏姿势
昨天写了个用到截屏功能的插件,结果问题不断,今天终于解决好了,把debug过程中所有尝试过的截屏方法都贴出来吧- 第一种 这是iOS 3时代开始就被使用的方法,它被废止于iOS 7.iOS的私有方法, ...
- ios摇一摇截屏代码
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- iOS - Quartz 2D 手势截屏绘制
1.绘制手势截屏 具体实现代码见 GitHub 源码 QExtension QTouchClipView.h @interface QTouchClipView : UIView /** * 创建手势 ...
- iOS中点击按钮跳转到外部浏览器和内部打开
如图所示,需要实现点击一个按钮,跳转到指定网页: -(void)pushBtnCellClickDeleate{ NSLog(@"跳转"); //在APP内部打开指定网页 UIWe ...
- iOS中点击按钮复制指定内容
话不多说,直接上图和代码:
- iOS - 点击按钮实现简单的复制功能
UIPasteboard使用 基本使用: - (void)copyClick { UIPasteboard *pab = [UIPasteboard generalPasteboard]; pab.s ...
- 在ios端点击按钮闪烁解决方法(小tips)
在ios端,safari浏览器上触发click事件有300ms的延迟响应,为touch添加的样式会和click冲突而出现闪烁问题 在safari中触摸事件的相应顺序如下: touchstart --& ...
- iOS点击按钮第二次不能旋转View
原因: 用CGAffineTransformMakeRotation,每次旋转都要在之前最后的角度基础之上再转才有效果. - (void)clickAction: (UIButton *)button ...
- IOS 点击按钮 光环 冲击波效果
UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(0, 0) radius:ROUND_WIDTH/2 - ...
随机推荐
- This program cannot be run in DOS mode.
问题:通过ftp上传的exe执行时提示“This program cannot be run in DOS mode.” 解决方法:检查ftp传输模式,设置成binary模式上传即可 参考:https ...
- Zookeeper3.4.14集群搭建
环境: 3台centos7.4 1. 下载release:wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3. ...
- No enclosing instance of type TestGson is accessible. Must qualify the allocation with an enclosing instance of type TestGson (e.g. x.new A() where x is an instance of TestGson).
main方法中实例化内部类报错: public class TestGson { public static void main(String[] args) { Gson gson=new Gson ...
- Oracle 设置自启动
1. 环境准备 1.1 系统 操作系统:CentOS 7(64位) 1.2 工具/软件 已安装完成的Oracle11g(64位): 创建数据库实例,本文中数据库实例名:test:$ORACLE_SI ...
- CentOS下安装gdb的方法
https://blog.csdn.net/zlk252620068/article/details/79564944
- 26.LockSupport线程阻塞工具
import java.util.concurrent.locks.LockSupport; /** * 线程阻塞工具类:LockSupport * 可以在线程内任意位置让线程阻塞 */ public ...
- Install packages failed: Installing packages: error occurred. ------简单的问题常常会被忽略
用 pip install 安装了wxpy这个库,但是使用的时候却报错:ImportError: No module named wxpy 我先用 pip list 查看了一下,发现这个库是已经存在的 ...
- Echarts--Y坐标标题显示不全
如:下图,Y坐标标题显示不全 y2可以控制不显示区域的高度,就能显示全啦 grid:{ x:40, x2:100, y2:200 }
- promise函数
一.promise函数是干什么的 promise函数是解决异步编程调用代码逻辑编写过于复杂的问题的,当网络请求非常复杂时,就会出现回调地狱,这样如果将这些代码写在一起就会看起来很复杂,且不利于阅读,如 ...
- Python3 使用HTMLTestRunner.py 报错ImportError: No module named 'StringIO'处理方法
HTMLTestRunner.py文件是基于Python2的语法,python3使用需要修改语法: 1.>>> 94行 import io # import StringIO 2.& ...