项目中用到了[UIApplication sharedApplication].keyWindow.rootViewController来改变根视图,这样直接设置页面是改变了,但没有跳转动画。
今天研究了一下页面跳转动画的效果
- 用UIView的transitionFromViewController方法有一个限制,就是跳转的页面之间必须有一个共同的父视图,否则报错
2.用UIView的transitionFromView方法,可以实现跳转动画,但是如果跳转过后的页面是Nav的页面,跳转后会有一个短暂但明显的Nav页面跳动,非常影响体验
3.直接给window添加layer动画
CATransition anim = [CATransition animation];
anim.type = @"fade";
anim.duration = 0.5;
[[UIApplication sharedApplication].keyWindow.layer addAnimation:anim forKey:nil];
[UIApplication sharedApplication].keyWindow.rootViewController = n;
这里动画有很多
/ 过渡效果
fade //交叉淡化过渡(不支持过渡方向)
push //新视图把旧视图推出去
moveIn //新视图移到旧视图上面
reveal //将旧视图移开,显示下面的新视图
cube //立方体翻滚效果
oglFlip //上下左右翻转效果
suckEffect //收缩效果,如一块布被抽走(不支持过渡方向)
rippleEffect //滴水效果(不支持过渡方向)
pageCurl //向上翻页效果
pageUnCurl //向下翻页效果
cameraIrisHollowOpen //相机镜头打开效果(不支持过渡方向)
cameraIrisHollowClose //相机镜头关上效果(不支持过渡方向)
*/