2013-08-05 130 views
0

代码块的故事板viewcontrollers动画和它的工作,但不是我想要的.. iwant从左到右的动画布做它的“左下角”到右上角。为什么不从左到右?objective-c CATransition问题

第二我如何停止动画?

UIViewController *sourceViewController = (UIViewController*)[self sourceViewController]; 
UIViewController *destinationController = (UIViewController*)[self destinationViewController]; 

CATransition* transition = [CATransition animation]; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionMoveIn; 
transition.subtype = kCATransitionFromRight; 



[destinationController.view.layer addAnimation:transition forKey:kCATransition]; 
[sourceViewController presentViewController:destinationController animated:YES completion:nil]; 
+0

'[sourceViewController presentViewController:destinationController animated:NO completion:nil];'设置'NO'为Apple默认模态动画 –

回答

0

我相信“从左到右”的动画你正在寻找可能是一个UINavigationController的推动动画。这也可以通过kCATransitionPush转换类型来实现。另外,presentViewController会触发“模态”动画(从底部开始),因此如果您未使用UINavigationController,则可能使用NO代替参数presentViewController

1
  1. 您需要将代码包装在CATransaction中。
  2. 您需要关闭默认动画(animated:NO
  3. 要让动画生效,必须将其添加到超级视图的图层中。在提供控制器的情况下,窗口层将是一个明智的选择。
  4. “从右移动”动画“不会是从左到右”的动画。
  5. 请注意,大多数情况下,您必须根据当前界面方向修改动画方向。

旁注:改变模态控制器的动画是“皱眉了”。如果您只是使用子视图控制器,您将极大地简化该问题。