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那回事儿相关推荐

  1. 从进程说起:容器到底是怎么一回事儿?

    文章作者:张磊,Kubernetes项目维护者,极客时间「深入剖析Kubernetes」专栏作者 文章来源:极客时间「深入剖析Kubernetes」第05节 白话容器基础 容器技术的火热, 必将为线上 ...

  2. maskView与CAGradientLayer详解

    #maskView基本原理 - png图片透明像素的原理 - maskView可类比于多张png图片的叠加遮罩,原理类似 - maskView是iOS8以上才有的,如果要考虑兼容低版本,用maskLa ...

  3. Java的并发编程中的多线程问题到底是怎么回事儿?

    转载自   Java的并发编程中的多线程问题到底是怎么回事儿? 在我之前的一篇<再有人问你Java内存模型是什么,就把这篇文章发给他.>文章中,介绍了Java内存模型,通过这篇文章,大家应 ...

  4. [你必须知道的.NET]第二十八回:说说Name这回事儿

    1 缘起 老赵在谈表达式树的缓存(2):由表达式树生成字符串中提到,在描述Type信息时讨论FullName或者AssemblyQualifiedName提供完整的Type信息,虽是小话题,但却是值得 ...

  5. 走心!北京语言大学教授毕业致辞:在人生的道路上,一定要把自己当回事儿...

    走出校园之后 --在2021毕业典礼上的致辞 北京语言大学教授 施春宏 >>>> 亲爱的同学们: 大家上午好! 今天,我们在这里隆重举行2021届毕业典礼.我谨代表全校老师向全 ...

  6. 话说 Oracle ACE 这回事儿

    前段时间,在有幸被多人举荐并由 Oracle 公司的 Jack 提名后,被 Oracle 公司授予了 Oracle ACE (Expertise: MySQL) 称号. 很多朋友听闻此事后都向我道贺, ...

  7. 支付宝的蚂蚁积分用途很多,别不当回事儿,用得好能省很多钱哦!

    支付宝是目前最火的一款支付软件,它可以转账.收款.花呗.借呗等功能,这些满足了很多人的需求,所以用户群体较大,但是在使用支付宝消费的同时,支付宝也给了我们一些权益,比如说蚂蚁积分,其实,它有很多用途, ...

  8. 统一诊断服务(UDS)- 安全等级是怎么回事儿

    统一诊断服务(UDS)- 安全等级是怎么回事儿 怎么解锁安全等级 安全等级如何与功能关联 上一篇<统一诊断服务(UDS)- 什么是安全访问>中介绍了安全访问的机制和应用场合.为了易于理解, ...

  9. 转发:神了,Fly_by结构原来就这么回事儿!

    来源:http://www.edadoc.com/cn/TechnicalArticle/Show.aspx?id=554 神了,Fly_by结构原来就这么回事儿! 来源:一博科技 时间:2014-1 ...

最新文章

  1. HUD 5687(字典树)
  2. 导入python自带的一系列数据集等操作
  3. stm32f4 hal 4位数码管_STM32裸机开发基础篇01开发环境搭建(HAL库)
  4. C#/ASP.NET完善的DBHelper,配套Model生成器
  5. mysql 的基本用法_mysql命令行基本用法
  6. jdbc mysql url写法_Springboot项目连接MySql写了一个bug你也可能遇到
  7. 第一课 Delphi7完全自学教程
  8. 威纶通触摸屏如何打开并升级EB8000旧版本项目并更换触摸屏型号?
  9. Fragstats 软件安装与下载步骤(附安装包)
  10. 主流开源 BI 产品对比---------2020开源BI工具都有哪些,哪个好用
  11. incaseformat病毒分析
  12. DS1308 Datasheet
  13. 前端HTML+CSS之网页排版(三)
  14. 【备忘】AAD Intune维护
  15. 如何在谷歌学术下载论文
  16. Android获取手机信号强度
  17. 五、用矩阵键盘实现密码锁
  18. Java基础篇二 视频来源:https://www.bilibili.com/video/BV12J41137hu?p=33spm_id_from=pageDriver
  19. 加餐1 | 考公、考编、军队文职以及事业编
  20. VANCL取代PPG 陈年超越卓越?

热门文章

  1. 计算机编程语言的分类,解释型语言、编译型语言、脚本语言的区别
  2. 如何在Ubuntu 14.04下安装OpenGL开发环境
  3. [深度学习] 一篇文章理解 word2vec
  4. BLAS+BLACS+LAPACK+SCALAPACK安装
  5. 计算机视觉知识基础_我见你:计算机视觉基础知识
  6. 强化学习之基础入门_强化学习基础
  7. 说不尽的嘎达梅林:读郭雪波的长篇小说《青旗•嘎达梅林》
  8. 在FSM模型中使用两态数据类型
  9. C++ Applications
  10. linux复制文件通信方式,Linux分布式文件拷贝