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

```
//使用maskView的情况
@property (nonatomic, strong)UIImageView *addImageView; //声明叠加图片View

self.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"];//一张底图
    //创建出渐变的layer
    CAGradientLayer *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 ->用于加载创建出的CAGradientLayer
    UIView *containerView = [[UIView alloc]initWithFrame:self.addImageView.bounds];
    [containerView.layer addSublayer:gradientLayer];
    //设定maskView
    self.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. IOS UIView详解

    文章目录 IOS UIView详解 1.官方类分析 2. UIView 常用的属性 2.1 UIView的圆角加阴影效果的实现 2.2 UIView 属性 2.2.1 UIView 几何属性 2.2. ...

  2. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  3. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  4. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  5. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

  6. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

  7. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

  8. Bert代码详解(一)重点详细

    这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...

  9. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

最新文章

  1. Leetcode 62. Unique Paths
  2. sql like 多个值_用于数据分析的8个SQL技术
  3. 微信小程序之redirectTo、switchTab和navigateTo
  4. 【Nutch基础教程之七】Nutch的2种运行模式:local及deploy
  5. Android通过广播实现强制下线功能
  6. C语言之加入头文件<stdbool.h>可以使用true和false
  7. python运行空白_执行时空白tkinter窗口
  8. elasticsearch配置优化
  9. Learn OpenGL(七)——OpenGL中使用着色器的基本步骤及GLSL渲染简单示例
  10. python创建图形界面_Python入门四:创建第一个图形界面-Go语言中文社区
  11. Spring-day02
  12. 计算机三级嵌入式系统
  13. SQL删除重复数据,仅保留(最新/有效的)一条数据
  14. 寒假学习之stm32(15)----DMA(direct memory access)
  15. 使用opencv实现简单的人脸识别
  16. 移动设备播放局域网内的视频
  17. 如何解决代理模式详解的原理详解
  18. windows使用备忘录
  19. 冬季到吉林来玩雪|史上最全的吉林冬季旅游攻略!
  20. javaScript判断当前浏览器(谷歌、火狐、IE)兼容IE11

热门文章

  1. CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)
  2. hashCode()、equals()以及compareTo()方法的理解
  3. 如何更改ubuntu的用户密码
  4. 【IT笔试面试题整理】链表
  5. 嵌入式Linux内核移植相关代码分析(转)
  6. Spring Boot中使用多数据库
  7. 概率论在数据挖掘_为什么概率论在数据科学中很重要
  8. 基于智能计算的降维技术研究与应用
  9. 网络技术等级考试知识点
  10. “全裸”:看向京的雕塑艺术展