扫描二维码的界面或者特定的View需要做挖空处理,在StackOverFlow上找了一番,发现了一些有用的方法,并且整理了一下。


挖空效果图


核心代码

Demo地址: https://github.com/BearRan/TestCutOut

- (void)drawRect:(CGRect)rect
{[super drawRect:rect];//  设置View的fill颜色[self.unCutColor setFill];UIRectFill(rect);//  获取上下文,并设置混合模式->kCGBlendModeDestinationOutCGContextRef context = UIGraphicsGetCurrentContext();CGContextSetBlendMode(context, kCGBlendModeDestinationOut);//  设置挖空路径UIBezierPath *path;path = [UIBezierPath bezierPathWithRect:[self.cutOutFrame CGRectValue]];[path fill];//  执行混合模式CGContextSetBlendMode(context, kCGBlendModeNormal);}

如何快速使用该方法

BearSkill地址:https://github.com/BearRan/BearSkill
欢迎fork

  • 集成’BearSkill’
pod 'BearSkill'
  • 导入头文件
#import <BearSkill/BearCutOutView.h>
  • 挖空方法一:使用Frame挖空
//  cutOutView_1
//  unCutColor为非挖空区域的颜色
//  cutOutFrame为挖空的区域BearCutOutView *cutOutView_1 = [[BearCutOutView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];[cutOutView_1 setUnCutColor:[UIColor yellowColor] cutOutFrame:CGRectMake(50, 50, 100, 100)];[self.view addSubview:cutOutView_1];
  • 挖空方法二:使用BezierPath挖空
//  cutOutView_2
//  unCutColor为非挖空区域的颜色
//  cutOutPath为挖空的区域//设定挖空区域UIBezierPath *bezierPath = [UIBezierPath bezierPath];[bezierPath moveToPoint:CGPointMake(50, 50)];[bezierPath addLineToPoint:CGPointMake(150, 120)];[bezierPath addLineToPoint:CGPointMake(60, 180)];[bezierPath closePath];BearCutOutView *cutOutView_2 = [[BearCutOutView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];[cutOutView_2 setUnCutColor:[UIColor purpleColor] cutOutPath:bezierPath];[self.view addSubview:cutOutView_2];

原创文章,欢迎提出意见或者建议。联系QQ:648070256

BearSkill之UIView挖空处理相关推荐

  1. POW矿池挖空块原理和解决方案

    第0章 引言 比特币的挖矿收益包含两部分,第一是区块奖励:第二是交易手续费.如果打空块,就收不到交易手续费,为什么有矿池会不要手续费来打空块呢? 第1章POW挖矿原理 工作量证明POW挖矿就是区块链生 ...

  2. “挖空三座山、装了几万台服务器”的绿色数据中心

    富士康在贵安新区的数据中心造在了山洞里."他们挖空了三座山,装了几万台服务器!" 数据中心主体竣工后,经实际测试年pue值小于1.1,居于世界先进水平. 当时,富士康规划园区中有一 ...

  3. 使用python读取txt坐标文件生成挖空矿山_探矿批量

    # -*-coding:utf-8-*- import arcpy import fileinput import os # 探矿权坐标格式举例 # 111.0846,31.1530 # 111.10 ...

  4. python读取坐标文本文件_使用python读取txt坐标文件生成挖空矿山_探矿批量

    # -*-coding:utf-8-*- import arcpy import fileinput import os # 探矿权坐标格式举例 # 111.0846,31.1530 # 111.10 ...

  5. 【Threejs效果:挖空几何体】ThreeBSP实现墙体挖洞

    1 效果如下 2 代码如下 基本思路: (1) 创建两个mesh,一个墙体,一个窗户 (2) 然后取墙体和窗户的差集,将差集转换成几何体 (3) 根据几何体新建mesh,并贴纹理 依赖库有三个: im ...

  6. 二层板的射频RF信号如何控阻抗 四层板的射频RF信号如何控阻抗  射频信号是否可以不控阻抗,射频差分需要控阻抗吗?为什么射频信号需要挖空隔层参考?射频信号为什么要加粗?

    来自群友的疑难杂症(加杨老师V信:PCB206 可入群):二层板的射频如何走线 四层板的射频如何控阻抗  射频信号是否可以不控阻抗等等 确实很多群友问PCB上面的射频走线该怎么走?比如两层板的射频走线 ...

  7. AD16实现板框挖空

    1.什么是板框挖空: 在已有外部板框的情形下,被要求在内部挖空一个部分. 这里引用别人的一块PCB图来诠释该功能的用途: 2D视图 3D视图 2.绘制方法 先看一下没有挖空操作的原图: 2D视图 3D ...

  8. AltiumDesigner覆铜挖空技巧总结

    问题提出 在进行PCB绘制后,大部分情况下,我们需要对板子反正面进行覆铜操作.同样,大多数情况下,我们的板子上都有定位孔,如果覆铜边界和定位孔边界距离过近,当拧螺丝时,螺丝会压在覆铜上,甚至在螺丝旋转 ...

  9. 关于高频信号PCB挖空

    原文:https://www.eda365.com/forum.php?mod=viewthread&tid=64227&page=1&_dsign=4034c65e http ...

最新文章

  1. springmvc整合mybatis框架源码 bootstrap html5 mysql oracle maven SSM
  2. 【Linux 内核】实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_list、timeout、watchdog_stamp、time_slice 字段 )
  3. 你相亲成功的几率有多高?机器学习硬核预测
  4. golden gate 错误集锦
  5. 多表查询中的一些概念
  6. OPPO实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移
  7. 本地建mysql数据库_mysql 安装及新建本地数据库遇到的问题
  8. RPM 打包指南系列 一
  9. linux 计算字符数命令,Linux WC命令示例,用于计算行数,单词数和字符数
  10. 在Oracle中查询表的大小、表的占用情况和表空间的大小
  11. 计算机思维论文1万字,计算机思维学论文选题 计算机思维论文题目怎么取
  12. 小学生计算机基础知识课件,计算机基础知识课件(图表部份).ppt
  13. 重要且紧急的事,紧急但不重要的事,重要但不紧急的事,既不紧急又不重要的事
  14. T32 dump 连续寄存器
  15. linux ssh keygen r,SSH的ssh-keygen命令基本用法详解
  16. 如何将前端echats 图表插入到execl 中
  17. 用c语言计算高考成绩,C语言计算距离高考剩余时间
  18. 守护安全|AIRIOT城市天然气综合管理解决方案
  19. 搞前端开发的比后端多两倍,这意味着哪一个更有前途?
  20. python:map_reduct_filter_sorted

热门文章

  1. python中幂函数_解决python中的幂函数、指数函数问题
  2. 开源企业内部沟通协作平台, 免费企业IM, ENTBOOST, Windows环境:免安装模式部署
  3. 常用文本编辑器英文大小写切换
  4. 2021网刃杯CTF ez-sql
  5. SAP中科目货币及本位币记账控制测试
  6. 2009年三季度上市公司报表1
  7. 看不懂这些,你可能已经落伍了 | 经济学人早报精选20210913
  8. Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)
  9. CheckBox选中状态改变
  10. Realsense L515使用