iOS简单修改转场动画

iOS转场动画

注意我的标题,是简单修改转场动画,这个简单是有限的修改.本篇文章的前提是,在不使用delegate的情况下(tabbar.nav.vc的delegate)进行有限的修改,而不是自定义.

对于CALayer类.我们可以使用下面这个方法去给CALayer上添加一个动画.

- (void)addAnimation:(CAAnimation *)anim forKey:(nullable NSString *)key;

对于转场,又有专门用于转场的CATransition类.

对于Push我们都知道是从左到右,我们如何能修改它到从上到下呢.我们知道,push动画是由导航栈管理的,那么理论上来说我们添加动画的layer应该是Nav的View的Layer:

SecondViewController *vc = [[SecondViewController alloc] init];
CATransition *transition = [CATransition animation];
/// 动画时间
transition.duration = 0.5;
/// 渐进渐出
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
/// 覆盖
transition.type = kCATransitionMoveIn;
/// 从底部到顶部
transition.subtype = kCATransitionFromTop;
/// 添加动画
[self.navigationController.view.layer addAnimation:transition forKey:@"animation"];
[self.navigationController pushViewController:vc animated:NO];

对于Pop动画.代码稍微有点不一样.

CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
/// 移除当前的
transition.type = kCATransitionReveal;
transition.subtype = kCATransitionFromBottom;
[self.navigationController.view.layer addAnimation:transition forKey:@"animation"];
[self.navigationController popViewControllerAnimated:NO];

可以看得出来,使用CATransition方式来实现转场动画来说的话,局限性还是比较大的.推荐使用iOS转场动画中的自定义方式.

CATransition

type:

下面presentingController是A,presented是B

type描述subtype说明
kCATransitionFade渐变不支持subtype
kCATransitionMoveIn覆盖,B在A上支持subtype,如果是top的话就是从底部移动到顶部
kCATransitionPush推出,类似nav的push,推出B的时候A会被"挤走"支持subtype,想用nav的push效果的话.subtype就设置为right
kCATransitionReveal我称之为揭开,A在B上,类似默认的dismiss效果支持subtype,想用默认的dismiss效果,subtype就设置为bottom
接下来就是一些"私有"的属性了,传入的是字符串--
cube立方体旋转效果A往B的方向转支持subtype,subtype的方向就是旋转的方向
oglFlip镜面翻转的效果,A往B翻支持subtype,subtype的方向就是翻转的方向
suckEffect抽纸的效果,A往左上角收,B在底下不支持subtype
rippleEffect水波纹效果不支持subtype
pageCurl书籍翻页往后翻的效果支持subtype,subtype的方向为翻页开始的方向
pageUnCurl书籍翻页往前翻的效果支持subtype,subtype的方向为翻页开始的方向
@“cameraIrisHollowOpen”旧版iOS相机App的快门打开效果不支持subtype
@“cameraIrisHollowClose”旧版iOS相机App的快门关闭效果不支持subtype

subtype:

subtype没什么好说的,就是四个方向罢了.kCATransitionFromRight,kCATransitionFromLeft,kCATransitionFromTop,kCATransitionFromBottom

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值