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

猜你喜欢

转载自blog.csdn.net/qq_18683985/article/details/104480206
今日推荐