使用 maskView 设计动画

作者: 952625a28d0d | 来源:发表于2015-07-20 00:31 被阅读2483次

    技术点:

    maskView(maskLayer)基本原理

    maskView配合CAGradientLayer的使用

    maskView配合带alpha通道图片的使用

    设计文本横向渐变消失的控件

    maskView(maskLayer)基本原理:

    png图片透明像素的原理

    maskView(maskLayer)可类比多张png图片的叠加遮罩,原理类似

    maskView是iOS8以上才有的方法,如果考虑版本的兼容问题,可以考虑用maskLayer替换

    下面我们来编写代码:

    1:导入图片

    原图

    带有透明效果的图片:

    带有透明效果的图片

    jpg图片是没有这种效果的

    下面我们来写代码

    1:加载图片

    效果图

    我们把模拟器调成一直呆在最前面,如上图所示。

    2:显示第二张图片

    效果图

    下面我们来写两张图片叠加的效果

    叠加效果图

    之所以会产生这种效果,是因为我们利用了png图片透明的特性。

    注意:maskView并不能用addSubView来添加

    maskView 配合 CAGradientLayer 的使用

    1:用CAGradientLayer直接产生带透明像素的layer,这一点和透明像素的图片相似,只不过我们这次用的是代码产生的layer来代替图片

    2:用maskView直接加载带CAGradientLayer的View,也就是说我们可以直接把CAGradientLayer直接当Mask来使用

    3:可是通过对CAGradientLayer进行动画的操作来实现动画效果

    下面我们创建工程来实现

    1:导入底图 这次不需要其他图片

    2:创建CAGradientLayer

    设定值:

    设定值

    3:创建容器View并加到基础图片上

    容器View

    4:添加动画效果(开始值、结束值)

    动画

    运行效果:

    无动画效果 从左到右的动画效果

    maskView 配合带 alpha 通道图片的使用

    1:直接使用带Alpha通道的图片比使用CAGradientLayer的方式更加高效

    2:可以使用一些技巧在maskView上添加多张图片

    3:可以在maskView中做简单的动画

    代码:

    1:添加两张图片,第一张覆盖第二张

    两张图片

    2:创建maskView作为容器

    maskView容器

    3:添加两张带有alpha通道的图片到MaskView上面

    第一张的下半部分透明,第二张的上半部分透明

    第一张
    第二张 添加两张带有alpha通道的图片

    4:添加动画效果

    第一个mskY轴上移、第二个Y轴下移

    运行效果:

    渐变效果1 渐变效果2

    设计文本横向渐变消失的控件

    1:接口设计

    2:封装CAGradientLayer用以提供mask遮罩

    3:动画样式的分析与设计

    1:封装控件

    .h 给定文本属性 给定渐变方法

    .h

    声明label、mask属性并创建

    声明label、mask属性并创建 .m加载label .m加载mask

    给text赋值

    .m给label.text赋值

    实现留给外界的动画方法

    实现动画效果的方法

    主控制器初始化并调用:

    主控制器调用

    运行效果:

    动画开始1 动画将要结束

    总结:

    maskView(maskLayer)的基本原理

    maskView配个CAGradientLayer的使用(创建渐变的图层)

    maskView配合alpha通道图片的使用

    设计文本横向渐变消失的控件

    相关文章

      网友评论

      本文标题:使用 maskView 设计动画

      本文链接:https://www.haomeiwen.com/subject/xnkpqttx.html