界面切换动画(CATransition实现 )

时间:2023-03-08 22:30:33

调用

// CATransition动画实现
[self pushWithAnimationType:@"fade"];
- (void)pushWithAnimationType:(NSString *)typeStr
{
__weak typeof (self) weakself = self;
[weakself.navigationController.view.layer addAnimation:[self createTransitionAnimation:typeStr] forKey:nil];
}
#pragma CATransition动画实现
/**
动画类型
fade 淡出效果
moveIn 新视图移动到旧视图
push 新视图推出旧视图
reveal 移开旧视图
cube 立方体翻转效果
oglFlip 翻转效果
suckEffect 收缩效果
rippleEffect 水滴波纹效果
pageCurl 向下翻页
pageUnCurl 向上翻页
CameraIrisHollowOpen, 开镜头
CameraIrisHollowClose, 关镜头
CurlDown, 下翻页
CurlUp, 上翻页
FlipFromLeft, 左翻转
FlipFromRight, 右翻转
*/
-(CATransition *)createTransitionAnimation:(NSString*)typeStr
{
//切换之前添加动画效果
//后面知识: Core Animation 核心动画
//不要写成: CATransaction
//创建CATransition动画对象
CATransition *animation = [CATransition animation];
//设置动画的类型:
animation.type = typeStr;
//设置动画的方向
animation.subtype = kCATransitionFromBottom;
//设置动画的持续时间
animation.duration = 1.5;
//设置动画速率(可变的)
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//动画添加到切换的过程中
return animation;
}