转场动画CALayer (Transition)
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)的更多相关文章
- iOS:核心动画之转场动画CATransition
转场动画——CATransition CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 U ...
- Android开发之Activity转场动画
引子 相信开发过iOS的程序员都知道iOS ViewController之间的跳转动画非常多,很酷对不对?这让开发Android的羡慕不已,曾几何时,Android中的Activity跳转是何等的生硬 ...
- Transition 过渡/转场动画(一)
UIViewController 的转场效果 当viewController通过push 或 present 进行转场时, 系统自带的动画是从右侧push进来一个新的viewControler (或从 ...
- ios基础动画、关键帧动画、动画组、转场动画等
概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...
- iOS 自定义转场动画浅谈
代码地址如下:http://www.demodashi.com/demo/11612.html 路漫漫其修远兮,吾将上下而求索 前记 想研究自定义转场动画很久了,时间就像海绵,挤一挤还是有的,花了差不 ...
- iOS7 push/pop转场动画
前言 iOS 7之后,苹果提供了自定义转场动画的API,我们可以自己去定义任意动画效果.本篇为笔者学习push.pop自定义转场效果的笔记,如何有任何不正确或者有指导意见的,请在评论中留下您的宝贵意见 ...
- CATransition自定义转场动画
我们可以通过CATransiton来自定义一些漂亮的转场动画, CATransition继承自CAAnimation, 所以用法跟CAAnimation差不多 先直接上一个代码: #import &q ...
- iOS 开发--转场动画
"用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下:" 本文主讲SWIFT版,OC版在后面会留下Demo下载 在iOS中,在同 ...
- 第六十五篇、OC_iOS7 自定义转场动画push pop
自定义转场动画,在iOS7及以上的版本才开始出现的,在一些应用中,我们常常需要定制自定义的的跳转动画 1.遵守协议:<UIViewControllerAnimatedTransitioning& ...
随机推荐
- FPGA的年龄
FPGA的年龄 1984年,Xilinx公司发布了第一个FPGA(但直到1985年这些器件才真正发货).尽管这些器件比当时那些简单的可编程逻辑器件(PLD)复杂的多,但大多数数字设计工程师却仅仅用这些 ...
- shell脚本 - 快速到达目录
服务器中存放很多工程目录,通过ssh登录,需要手动敲命令,很麻烦,可以建立自动登录脚本 1.在服务器登录是默认的目录中建立脚本文件 vi drivers.sh #建立登录脚本 cd data/work ...
- SQL字符串拼接
不同的数据库,相应的字符串拼接方式不同,通过对比加深一下记忆. 一.MySQL字符串拼接 1.CONCAT函数 语法格式:CONCAT(char c1, char c2, ..., char cn) ...
- svn更新报错:出现skipped:目标路径
skipped 意为:跳过此目标文件: 一般出现在目标文件被删除后,重新更新情况下: 解决办法及结果: 1,回到此目标文件的上一层文件夹,team-clean up,结果不成功 2,回到此目标文件的上 ...
- HTTP-Runoob:HTTP状态码
ylbtech-HTTP-Runoob:HTTP状态码 1.返回顶部 1. HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务 ...
- CSS——position
position是指元素的定位方式,有:static.absolute.fixed.relative.inherit 5种. static 默认,布局排版方式按照HTML代码的顺序布局. absolu ...
- MPEG-PS封装格式
据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS:TransportStream)和节目流(PS:ProgramStream) PS文件分为3层:ps层(Program Stre ...
- C语言学习笔记--指针阅读技巧
1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2.3 步骤,直到阅读结束 注 ...
- DAY10-MYSQL数据类型
一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...
- ubuntu系统里vi编辑器时,按方向箭头输入是乱码的ABCD字母?(图文详解)
不多说,直接上干货! 问题详情 ubuntu系统里vi编辑器时,按方向箭头输入是乱码的ABCD字母? 解决办法 是由于预装的vim软件没更新,运行 sudo apt-get install vi ...