2017-07-03 85 views
0

我有两个视图 - 控制A和B.一个支持人像和风景,B只支持portrait.The下面的代码是在A.使用CATransition自定义视图 - 控制过渡动画

UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
B *vcb = [board instantiateViewControllerWithIdentifier:@"B"]; 

CATransition *a=[CATransition animation]; 
a.duration = 0.4f; 
a.type = kCATransitionMoveIn; 
a.subtype = kCATransitionFromTop; 
a.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
[self.view.window.layer addAnimation:a forKey:@"kTransitionAnimation"]; 
[self presentViewController:vcb animated:NO completion:nil]; 

而就B,我做的dissmiss。

CATransition *a=[CATransition animation]; 
a.duration = 0.4f; 
a.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
a.type = kCATransitionReveal; 
a.subtype = kCATransitionFromBottom; 

[self.view.window.layer addAnimation:a forKey:@"dismiss"]; 
[self dismissViewControllerAnimated:NO completion:nil]; 

它可以在纵向模式下正常工作。但是,当我做下列步骤时,它会出错: 1.在肖像模式下呈现B 2.将手机旋转至风景,然后单击以消除B. 3.动画错误。 任何人都可以解释这一点,以及如何解决它。我希望B的行为与肖像模式相同。

+0

为什么您要在当前模型中添加动画,您只是在执行kCATransitionFromTop和kCATransitionFromBottom,这是默认情况下的动画。 –

+0

这只是一个演示。所以这个动画的方向可能是kCATransitionFromLeft或kCATransitionFromRight。关键是为什么动画不对,我把手机变成风景。谢谢! – user6299706

回答

0

不确定,我正确理解你的问题。可能您应该在您的控制器A中处理DeviceOrientation。