1、将对应UI控件的层调用以下接口即可

  • 1.1 .h文件

    //
    // 文 件 名:CALayer+Transition.h
    //
    // 版权所有:Copyright © 2018年 leLight. All rights reserved.
    // 创 建 者:leLight
    // 创建日期:2018/7/6.
    // 文档说明:
    // 修 改 人:
    // 修改日期:
    // #import <QuartzCore/QuartzCore.h> @interface CALayer (Transition) /************ 动画类型 *****************************/
    typedef enum { TransitionAnimTypeRippleEffect=0, // 水波
    TransitionAnimTypeSuckEffect, // 吸走
    TransitionAnimTypePageCurl, // 翻开书本
    TransitionAnimTypeOglFlip, // 正反翻转
    TransitionAnimTypeCube, // 正方体
    TransitionAnimTypeReveal, // push推开
    TransitionAnimTypePageUnCurl, // 合上书本
    TransitionAnimTypeRamdom, // 随机
    } TransitionAnimType; /************ 动画方向 *****************************/
    typedef enum { TransitionSubtypesFromTop=0, // 从上
    TransitionSubtypesFromLeft, // 从左
    TransitionSubtypesFromBotoom, // 从下
    TransitionSubtypesFromRight, // 从右
    TransitionSubtypesFromRamdom, // 随机
    } TransitionSubType; /************ 动画曲线 *****************************/
    typedef enum { TransitionCurveDefault, // 默认
    TransitionCurveEaseIn, // 缓进
    TransitionCurveEaseOut, // 缓出
    TransitionCurveEaseInEaseOut, // 缓进缓出
    TransitionCurveLinear, // 线性
    TransitionCurveRamdom, // 随机
    } TransitionCurve; /**
    * 转场动画
    *
    * @param animType 转场动画类型
    * @param subType 转动动画方向
    * @param curve 转动动画曲线
    * @param duration 转动动画时长
    *
    * @return 转场动画实例
    */
    - (CATransition *)transitionWithAnimType:(TransitionAnimType)animType subType:(TransitionSubType)subType curve:(TransitionCurve)curve duration:(CGFloat)duration; @end
  • 1.2 .m文件

    //
    // 文 件 名:CALayer+Transition.m
    //
    // 版权所有:Copyright © 2018年 leLight. All rights reserved.
    // 创 建 者:leLight
    // 创建日期:2018/7/6.
    // 文档说明:
    // 修 改 人:
    // 修改日期:
    // #import "CALayer+Transition.h" @implementation CALayer (Transition) /**
    * 转场动画
    *
    * @param animType 转场动画类型
    * @param subType 转动动画方向
    * @param curve 转动动画曲线
    * @param duration 转动动画时长
    *
    * @return 转场动画实例
    */
    - (CATransition *)transitionWithAnimType:(TransitionAnimType)animType subType:(TransitionSubType)subType curve:(TransitionCurve)curve duration:(CGFloat)duration { NSString *key = @"transition"; if([self animationForKey:key] != nil){
    [self removeAnimationForKey:key];
    } CATransition *transition = [CATransition animation]; // 动画时长
    transition.duration = duration;
    // 动画类型
    transition.type = [self animaTypeWithTransitionType:animType];
    // 动画方向
    transition.subtype = [self animaSubtype:subType];
    // 缓动函数
    transition.timingFunction = [CAMediaTimingFunction functionWithName:[self curve:curve]];
    // 完成动画删除
    transition.removedOnCompletion = YES;
    [self addAnimation:transition forKey:key];
    return transition;
    } /************ 返回动画曲线 *****************************/
    - (NSString *)curve:(TransitionCurve)curve{ // 曲线数组
    NSArray *funcNames = @[
    kCAMediaTimingFunctionDefault,
    kCAMediaTimingFunctionEaseIn,
    kCAMediaTimingFunctionEaseInEaseOut,
    kCAMediaTimingFunctionEaseOut,
    kCAMediaTimingFunctionLinear
    ]; return [self objFromArray:funcNames index:curve isRamdom:(TransitionCurveRamdom == curve)];
    } /************ 返回动画方向 *****************************/
    - (NSString *)animaSubtype:(TransitionSubType)subType { // 设置转场动画的方向
    NSArray *subtypes = @[
    kCATransitionFromTop,
    kCATransitionFromLeft,
    kCATransitionFromBottom,
    kCATransitionFromRight
    ]; return [self objFromArray:subtypes index:subType isRamdom:(TransitionSubtypesFromRamdom == subType)];
    } /************ 返回动画类型 *****************************/
    - (NSString *)animaTypeWithTransitionType:(TransitionAnimType)type { // 设置转场动画的类型
    NSArray *animArray = @[
    @"rippleEffect",
    @"suckEffect",
    @"pageCurl",
    @"oglFlip",
    @"cube",
    @"reveal",
    @"pageUnCurl",
    @"push"
    ];
    return [self objFromArray:animArray index:type isRamdom:(TransitionAnimTypeRamdom == type)];
    } /************ 统一从数据返回对象 *****************************/
    - (id)objFromArray:(NSArray *)array index:(NSUInteger)index isRamdom:(BOOL)isRamdom { NSUInteger count = array.count;
    NSUInteger i = isRamdom?arc4random_uniform((u_int32_t)count):index;
    return array[i];
    } @end

转场动画CALayer (Transition)的更多相关文章

  1. iOS:核心动画之转场动画CATransition

    转场动画——CATransition CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 U ...

  2. Android开发之Activity转场动画

    引子 相信开发过iOS的程序员都知道iOS ViewController之间的跳转动画非常多,很酷对不对?这让开发Android的羡慕不已,曾几何时,Android中的Activity跳转是何等的生硬 ...

  3. Transition 过渡/转场动画(一)

    UIViewController 的转场效果 当viewController通过push 或 present 进行转场时, 系统自带的动画是从右侧push进来一个新的viewControler (或从 ...

  4. ios基础动画、关键帧动画、动画组、转场动画等

    概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...

  5. iOS 自定义转场动画浅谈

    代码地址如下:http://www.demodashi.com/demo/11612.html 路漫漫其修远兮,吾将上下而求索 前记 想研究自定义转场动画很久了,时间就像海绵,挤一挤还是有的,花了差不 ...

  6. iOS7 push/pop转场动画

    前言 iOS 7之后,苹果提供了自定义转场动画的API,我们可以自己去定义任意动画效果.本篇为笔者学习push.pop自定义转场效果的笔记,如何有任何不正确或者有指导意见的,请在评论中留下您的宝贵意见 ...

  7. CATransition自定义转场动画

    我们可以通过CATransiton来自定义一些漂亮的转场动画, CATransition继承自CAAnimation, 所以用法跟CAAnimation差不多 先直接上一个代码: #import &q ...

  8. iOS 开发--转场动画

    "用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下:" 本文主讲SWIFT版,OC版在后面会留下Demo下载 在iOS中,在同 ...

  9. 第六十五篇、OC_iOS7 自定义转场动画push pop

    自定义转场动画,在iOS7及以上的版本才开始出现的,在一些应用中,我们常常需要定制自定义的的跳转动画 1.遵守协议:<UIViewControllerAnimatedTransitioning& ...

随机推荐

  1. flask之Jinja2

    Jinja2 is a library found at http://jinja.pocoo.org/; you can use it to produce formatted text with ...

  2. Poj 2395 Out of Hay( 最小生成树 )

    题意:求最小生成树中最大的一条边. 分析:求最小生成树,可用Prim和Kruskal算法.一般稀疏图用Kruskal比较适合,稠密图用Prim.由于Kruskal的思想是把非连通的N个顶点用最小的代价 ...

  3. Azure上通过haproxy实现APP Gateway或WAF的http跳转https

    Azure上的APP Gateway是七层负载均衡服务,WAF是APP Gateway服务的扩展.在实现七层负载均衡的同时,增加了WAF的功能,可以对后台的HTTP服务进行保护. Azure WAF采 ...

  4. acm 士兵杀敌(一)

    士兵杀敌(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军现在 ...

  5. Mina APR传输与串口传输讲解---zhengli

    原文地址:Mina Transports(Apache Mina user guide Chapter6 Transport) 1.1.1.APR传输 1.1.1.1.介绍 APR (Apache P ...

  6. 9个步骤:教你设计出优秀的MMORPG副本关卡

    转自:http://www.gameres.com/664485.html 副本的定义 以一张场景地图为原型,针对单个玩家.队伍或者团队生成的一个实例,包含完整的开启关闭.怪物刷新.进度记录等逻辑. ...

  7. Nor Flash的CFI与JEDEC接口

    Flash 存储器接口还有两个标准:CFI和JEDEC.CFI为公共Flash接口[Common Flash Interface],用来帮助程序从Flash芯片中获取操作方式信息(发送命令,从nor ...

  8. jackson2.x与Jackson1.9的比较

    Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象.Jackson库于2012.10.8号发布了最新的2.1版.Jackson源码目前 ...

  9. 安装 MongoDB。

    1.安装 MongoDB. 1.为软件包管理系统导入公钥. Ubuntu 软件包管理工具为了保证软件包的一致性和可靠性需要用 GPG 密钥检验软件包.使用下列命令导入 MongoDB 的 GPG 密钥 ...

  10. tomcat urlwrite报错

    十二月 26, 2017 2:15:30 下午 org.apache.catalina.core.ApplicationContext logINFO: org.tuckey.web.filters. ...