PresentViewController 界面切换 CATransition—转场动画
http://blog.csdn.net/ityanping/article/details/39270609
http://www.jianshu.com/p/267ba592254c
在项目中没有创建 UINavgationController,无法使用默认的 push 方法 进行页面的跳转时。
使用另一种页面跳转方法 :一般会使用presentViewController来切换视图并携带切换时的动画,
其中切换方法如下:
– presentViewController:animated:completion: 弹出,出现一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil
– dismissViewControllerAnimated:completion:退出一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil
切换动画在压入一个新视图和弹出顶层视图均可以使用,下面只以压入视图为例。
presentModalViewController:animated:completion:使用系统自带四种动画
简单的实现方式:
[page2Controller setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:myNextViewController animated:YES completion:nil];
系统支持的四种动画:
typedef enum {
UIModalTransitionStyleCoverVertical=0, //默认方式,竖向上推
UIModalTransitionStyleFlipHorizontal, //水平反转
UIModalTransitionStyleCrossDissolve,//隐出隐现
UIModalTransitionStylePartialCurl,//部分翻页效果
} UIModalTransitionStyle;
常用的方法:
// 结合控件的点击事件,例:常用的UIButton
UIButton * button = [UIButton alloc] init];
[button addTarget:self action:@selector(buttonClick) forControlEvents:(UIControlEventTouchUpInside)];
// 默认跳转方式,从底部推出
- (void)buttonClick {
UIViewController * viewController = [UIViewController alloc] init];
[self presentViewController: viewController animated:YES completion:nil];
}
根据需求设置跳转时的样式:
- (void)buttonClick {
CATransition * animation = [CATransition animation];
animation.duration = 0.5; // 时间
/** type:动画类型
* pageCurl 向上翻一页
* pageUnCurl 向下翻一页
* rippleEffect 水滴
* suckEffect 收缩
* cube 方块
* oglFlip 上下翻转
*
cameraIrisHollowOpen 相机打开
*
cameraIrisHollowClose 相机关闭
*/
animation.type = @"pageCurl";
/** type:页面转换类型
* kCATransitionFade 淡出
* kCATransitionMoveIn 覆盖
* kCATransitionReveal 底部显示
* kCATransitionPush 推出
*/
animation.type = kCATransitionPush;
//PS:type 更多效果请 搜索: CATransition
/** subtype:出现的方向
* kCATransitionFromRight 右
* kCATransitionFromLeft 左
* kCATransitionFromTop 上
* kCATransitionFromBottom 下
*/
animation.subtype = kCATransitionFromRight;
[self.view.window.layer addAnimation:animation forKey:nil]; // 添加动作
[self presentViewController: viewController animated:YES completion:nil]; // 跳转
}
// PS:设置 type 属性时,两种写法