从右/左动画presentModalViewController

use*_*093 25 iphone animation objective-c presentmodalviewcontroller

目前我正在使用[self presentModalViewController :newVC animated:YES].我想通过推送效果从左/右/上/下呈现newViewcontroller.我尝试使用CATransition但它在转换之间显示黑屏.

小智 91

在场时:

CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[self.view.window.layer addAnimation:transition forKey:nil];

[self presentModalViewController:viewCtrl animated:NO];
Run Code Online (Sandbox Code Playgroud)

解雇时:

CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[self.view.window.layer addAnimation:transition forKey:nil];
[self dismissModalViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不再适用于iOS 8,因为呈现的VC正在移动而不是呈现的VC.知道怎么解决吗? (5认同)
  • @wcrane我也在黑屏闪烁.实际上fadein fadeout和fadein动画正在发生.任何提示我试图删除黑色阴影 (2认同)

Jac*_*rky 0

UIModalTransitionStyles 只有四种:

UIModalTransitionStyleCoverVertical
UIModalTransitionStyleFlipHorizontal
UIModalTransitionStyleCrossDissolve
UIModalTransitionStylePartialCurl
Run Code Online (Sandbox Code Playgroud)

例如:

UIViewController *controller = [[[MyViewController alloc] init] autorelease];
UIModalTransitionStyle trans = UIModalTransitionStyleFlipHorizontal;
[UIView beginAnimations: nil context: nil];
[UIView setAnimationTransition: trans forView: [self window] cache: YES];
[navController presentModalViewController: controller animated: NO];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)