怎么改变delegate.window.rootViewController出现动画效果

我通过改变 delegate.window.rootViewController 实现退出 和 登陆的功能,但是这样做没有动画效果,要怎么样做可以出现动画效果。

animation 为 no

然后自己做现实效果

这是我的代码,给你参考下.

.keyWindow.layer addAnimation:动画 forKey:nil];

动画获取:KYNaviAnimationType,KYNaviAnimationDirection可以参考switch里面的enum,主要是一个类型和方向.

/**
@brief:获取动画方法
*/
- (CAAnimation *)animationWithType:(KYNaviAnimationType)animationType direction:(KYNaviAnimationDirection)direction{
CATransition *animation = ;
;
switch (animationType) {
case KYNaviAnimationTypeFade:
animation.type = kCATransitionFade; //淡化
break;
case KYNaviAnimationTypePush:
animation.type = kCATransitionPush; //推挤
break;
case KYNaviAnimationTypeReveal:
animation.type = kCATransitionReveal; //揭开
break;
case KYNaviAnimationTypeMoveIn:
animation.type = kCATransitionMoveIn;//覆盖
break;
case KYNaviAnimationTypeCube:
animation.type = @"cube"; //立方体
break;
case KYNaviAnimationTypeSuck:
animation.type = @"suckEffect"; //吸收
break;
case KYNaviAnimationTypeSpin:
animation.type = @"oglFlip"; //旋转
break;
case KYNaviAnimationTypeRipple:
animation.type = @"rippleEffect"; //波纹
break;
case KYNaviAnimationTypePageCurl:
animation.type = @"pageCurl"; //翻页
break;
case KYNaviAnimationTypePageUnCurl:
animation.type = @"pageUnCurl"; //反翻页
break;
case KYNaviAnimationTypeCameraOpen:
animation.type = @"cameraIrisHollowOpen"; //镜头开
break;
case KYNaviAnimationTypeCameraClose:
animation.type = @"cameraIrisHollowClose"; //镜头关
break;
default:
animation.type = kCATransitionPush; //推挤
break;
}

switch (direction) {
case KYNaviAnimationDirectionFromLeft:
animation.subtype = kCATransitionFromLeft;
break;
case KYNaviAnimationDirectionFromRight:
animation.subtype = kCATransitionFromRight;
break;
case KYNaviAnimationDirectionFromTop:
animation.subtype = kCATransitionFromTop;
break;
case KYNaviAnimationDirectionFromBottom:
animation.subtype = kCATransitionFromBottom;
break;
default:
animation.subtype = kCATransitionFromRight;
break;
}
];
return animation;
}