2012-12-06 66 views
5

我想在導航視圖控制器按下另一個視圖控制器時更改「從右向左」的「從右向左」過渡。我在故事板中找到了一個選項,但它似乎不起作用。過渡風格仍然相同。 通過單擊故事板的目的視圖控制器我發現了這一點,雖然它看起來像過渡是模態風格SEGUE:iOS push style segue transition

transition

所以,我的問題是,是否有可能使推風格賽格過渡看起來不同?如果是這樣,怎麼樣?

回答

2

爲了進行推送轉換,您需要使用連接視圖的UINavigationController。這些都是一次過渡的模式轉換選擇。

同樣,至少在故事板中,如果您已經在使用UINavigationController,則無法使用其他任何操作。

我發現解決此限制的最簡單方法是在代碼中執行此操作,並在UIView Animation或CAAnimation中包裝沒有動畫的推送。

6

您可以在自定義Segue中使用CATransition來實現任何類型的轉換。這裏是示例代碼。

-(void)perform { 

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

CATransition* transition = [CATransition animation]; 
transition.duration = .25; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade 
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom 



[sourceViewController.navigationController.view.layer addAnimation:transition 
              forKey:kCATransition]; 

[sourceViewController.navigationController pushViewController:destinationController animated:NO];  


} 

你訪問這個鏈接查看更多細節http://blog.jambura.com/2012/07/05/custom-segue-animation-left-to-right-using-catransition/

+0

大答案兄弟......我看着它很長一段時間:-) –