接下来讨论的是没有NavigationController的情况, , 只是单纯的View;
那通常会使用
[self presentViewController:myView animated:YES completion:nil]; 弹出, 加载一个新视图.
[self dismissViewControllerAnimated:YES completion:nil]; 退出当前视图.
下面介绍两种主要方式来设置进出动画:
1. 系统自带, 通过setModalTransitionStype设置.
[myController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
这样你的viewController就会按照竖直向上的方式(默认方式)弹出或者关闭;
当然系统总共提供四种可供选择:
UIModalTransitionStyleCoverVertical=0, //默认方式,竖向上推
UIModalTransitionStyleFlipHorizontal, //水平反转
UIModalTransitionStyleCrossDissolve, //隐出隐现
UIModalTransitionStylePartialCurl, //部分翻页效果
2. 利用CATransition自己制作动画
demo: 实现水滴效果:
CATransition *animation = [CATransition animation];
animation.duration = 1.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.type = @"rippleEffect";
//animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromLeft;
[self.view.window.layer addAnimation:animation forKey:nil];
[self presentModalViewController:nextViewController animated:NO completion:nil];
上述设置了滴水进入效果, 当然你还可以设置其他效果:
通过设置animation.type:
pageCurl // 向上翻一页(像书页一样)
pageUnCurl // 向下翻一页
rippleEffect // 滴水效果
suckEffect // 收缩效果,如一块布被抽走
cube // 立方体效果翻转
oglFlip 上下翻转效果
也可以是:
kCATransitionFade // 淡出
kCATransitionMoveIn // 覆盖
kCATransitionPush // 推出
kCATransitionReveal // 从底部出现
kCATransitionFromRight // 右边
kCATransitionFromLeft // 左边, 默认方向
kCATransitionFromTop // 上面
kCATransitionFromBottom // 底部