maskView与CAGradientLayer那回事儿
maskView基本原理
- png图片透明像素的原理
- maskView可类比于多张png图片的叠加遮罩,原理类似
- maskView是iOS8以上才有的,如果要考虑兼容低版本,用maskLayer替代
//使用maskView的情况
@property (nonatomic, strong)UIImageView *addImageView; //声明叠加图片Viewself.addImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 200, 200)];[self.view addSubview:self.addImageView];
self.addImageView.image = [UIImage imageNamed:@"base"];//一张底图
UIImageView *mask = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
mask.image = [UIImage imageNamed:@"mask"];//一张png图片,左边黑色,渐变到右边白色
self.addImageView.maskView = mask;//生成了叠加在一起一边半透明的图片,左边黑色部分正常显示,右边渐变白色显示模糊到无
注意:maskView并不能用addSubview来添加遮罩
maskView配合CAGradientLayer的使用
- 用CAGradientLayer直接产生带透明像素通道的layer
- 用maskView直接加载带CAGradientLayer的view
- 可以通过对CAGradientLayer进行动画的操作实现动画效果
看实例代码
self.addImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 450, 200, 200)];[self.view addSubview:self.addImageView];self.addImageView.image = [UIImage imageNamed:@"base"];//一张底图//创建出渐变的layerCAGradientLayer *gradientLayer = [CAGradientLayer layer];gradientLayer.frame = self.addImageView.bounds;gradientLayer.colors = @[(__bridge id)[UIColor clearColor].CGColor,(__bridge id)[UIColor blackColor].CGColor,(__bridge id)[UIColor clearColor].CGColor];gradientLayer.locations = @[@(0.05),@(0.5),@(0.95)];//设置渐变方向gradientLayer.startPoint = CGPointMake(0, 0);gradientLayer.endPoint = CGPointMake(1, 0);//容器view ->用于加载创建出的CAGradientLayerUIView *containerView = [[UIView alloc]initWithFrame:self.addImageView.bounds];[containerView.layer addSublayer:gradientLayer];//设定maskViewself.addImageView.maskView = containerView;CGRect frame = containerView.frame;frame.origin.x -=200;containerView.frame = frame;//给maskView做动画效果[UIView animateWithDuration:3.f animations:^{//改变位移CGRect frame = containerView.frame;frame.origin.x += 400;//重新赋值containerView.frame = frame;}];
我们不仅可以使用CAGradientLayer创建的蒙版,我们还可以对他进行动画效果的设置
maskView与CAGradientLayer那回事儿相关推荐
- 从进程说起:容器到底是怎么一回事儿?
文章作者:张磊,Kubernetes项目维护者,极客时间「深入剖析Kubernetes」专栏作者 文章来源:极客时间「深入剖析Kubernetes」第05节 白话容器基础 容器技术的火热, 必将为线上 ...
- maskView与CAGradientLayer详解
#maskView基本原理 - png图片透明像素的原理 - maskView可类比于多张png图片的叠加遮罩,原理类似 - maskView是iOS8以上才有的,如果要考虑兼容低版本,用maskLa ...
- Java的并发编程中的多线程问题到底是怎么回事儿?
转载自 Java的并发编程中的多线程问题到底是怎么回事儿? 在我之前的一篇<再有人问你Java内存模型是什么,就把这篇文章发给他.>文章中,介绍了Java内存模型,通过这篇文章,大家应 ...
- [你必须知道的.NET]第二十八回:说说Name这回事儿
1 缘起 老赵在谈表达式树的缓存(2):由表达式树生成字符串中提到,在描述Type信息时讨论FullName或者AssemblyQualifiedName提供完整的Type信息,虽是小话题,但却是值得 ...
- 走心!北京语言大学教授毕业致辞:在人生的道路上,一定要把自己当回事儿...
走出校园之后 --在2021毕业典礼上的致辞 北京语言大学教授 施春宏 >>>> 亲爱的同学们: 大家上午好! 今天,我们在这里隆重举行2021届毕业典礼.我谨代表全校老师向全 ...
- 话说 Oracle ACE 这回事儿
前段时间,在有幸被多人举荐并由 Oracle 公司的 Jack 提名后,被 Oracle 公司授予了 Oracle ACE (Expertise: MySQL) 称号. 很多朋友听闻此事后都向我道贺, ...
- 支付宝的蚂蚁积分用途很多,别不当回事儿,用得好能省很多钱哦!
支付宝是目前最火的一款支付软件,它可以转账.收款.花呗.借呗等功能,这些满足了很多人的需求,所以用户群体较大,但是在使用支付宝消费的同时,支付宝也给了我们一些权益,比如说蚂蚁积分,其实,它有很多用途, ...
- 统一诊断服务(UDS)- 安全等级是怎么回事儿
统一诊断服务(UDS)- 安全等级是怎么回事儿 怎么解锁安全等级 安全等级如何与功能关联 上一篇<统一诊断服务(UDS)- 什么是安全访问>中介绍了安全访问的机制和应用场合.为了易于理解, ...
- 转发:神了,Fly_by结构原来就这么回事儿!
来源:http://www.edadoc.com/cn/TechnicalArticle/Show.aspx?id=554 神了,Fly_by结构原来就这么回事儿! 来源:一博科技 时间:2014-1 ...
最新文章
- HUD 5687(字典树)
- 导入python自带的一系列数据集等操作
- stm32f4 hal 4位数码管_STM32裸机开发基础篇01开发环境搭建(HAL库)
- C#/ASP.NET完善的DBHelper,配套Model生成器
- mysql 的基本用法_mysql命令行基本用法
- jdbc mysql url写法_Springboot项目连接MySql写了一个bug你也可能遇到
- 第一课 Delphi7完全自学教程
- 威纶通触摸屏如何打开并升级EB8000旧版本项目并更换触摸屏型号?
- Fragstats 软件安装与下载步骤(附安装包)
- 主流开源 BI 产品对比---------2020开源BI工具都有哪些,哪个好用
- incaseformat病毒分析
- DS1308 Datasheet
- 前端HTML+CSS之网页排版(三)
- 【备忘】AAD Intune维护
- 如何在谷歌学术下载论文
- Android获取手机信号强度
- 五、用矩阵键盘实现密码锁
- Java基础篇二 视频来源:https://www.bilibili.com/video/BV12J41137hu?p=33spm_id_from=pageDriver
- 加餐1 | 考公、考编、军队文职以及事业编
- VANCL取代PPG 陈年超越卓越?
热门文章
- 计算机编程语言的分类,解释型语言、编译型语言、脚本语言的区别
- 如何在Ubuntu 14.04下安装OpenGL开发环境
- [深度学习] 一篇文章理解 word2vec
- BLAS+BLACS+LAPACK+SCALAPACK安装
- 计算机视觉知识基础_我见你:计算机视觉基础知识
- 强化学习之基础入门_强化学习基础
- 说不尽的嘎达梅林:读郭雪波的长篇小说《青旗•嘎达梅林》
- 在FSM模型中使用两态数据类型
- C++ Applications
- linux复制文件通信方式,Linux分布式文件拷贝