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 - ...
随机推荐
- 【LeetCode】几何学 geometry(共2题)
[587]Erect the Fence [892]Surface Area of 3D Shapes
- Sass函数:Opacity函数-opacify()、fade-in()函数
这两个函数是用来对已有颜色的透明度做一个加法运算,会让颜色更加不透明.其接受两个参数,第一个参数是原始颜色,第二个参数是你需要增加的透明度值,其取值范围主要是在 0~1 之间.当透明度值增加到大于 1 ...
- 【串线篇】sql映射文件-分布查询(下)cellection的1-n
1.场景 一个门人手一把钥匙 1-n 一个Lock对应一个Key集合(collection自动整成list) Map不是collection的子接口或者实现类.Map是一个接口. JavaBean:p ...
- MinMax 容斥 学习笔记
基本形式 \[ \max(S) = \sum_{T\subseteq S, T \neq \varnothing} (-1)^{|T|-1}\min(T) \] 证明 不提供数学证明. 简要讲一下抽象 ...
- [BZOJ1023][SHOI2008]cactus仙人掌图 DP
题目链接 套路就是先考虑一般的树上做法.求直径的dp的做法大家应该都会吧. 那么设\(dp[i]\)表示\(i\)的子树中的点到\(i\)的最大距离. 在dp的过程中 \[ ans=\max\{dp[ ...
- CentOS7.5 安装部署Apache+Mysql+Php
系统:CentOS7.5 安装Apache 安装 yum -y install httpd 开启apache服务 systemctl start httpd.service 设置apache服务开机启 ...
- grep正则表达式(二)
任意字符(The Any Character) dot or period character: "." grep -h '.zip' dirlist*.txt ".&q ...
- Halo(九)
跨域问题 域名A(http://www.a.com)的 Web 应用程序中, 通过标签引入了域名B(http://ww.b.com)站点的某图片资源(http://www.b.com/image.jp ...
- 【UNR #2】黎明前的巧克力 解题报告
[UNR #2]黎明前的巧克力 首先可以发现,等价于求 xor 和为 \(0\) 的集合个数,每个集合的划分方案数为 \(2^{|S|}\) ,其中 \(|S|\) 为集合的大小 然后可以得到一个朴素 ...
- linux0.11内核源码——boot和setup部分
https://blog.csdn.net/KLKFL/article/details/80730131 https://www.cnblogs.com/joey-hua/p/5528228.html ...