2017-07-03 87 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。