5

我有一個UINavigationController。我將VC1作爲rootViewController並以編程方式從VC1加載VC2,然後將自定義動畫從VC1轉到VC2。標準。一切都很好,很好。現在自定義UINavigationController動畫:CATransition

,我想有兩個之間的自定義動畫像這樣: Custom animation

總之,VC1滑出的觀點,而VC2是它下面。就像一疊紙,您可以將第一張紙(VC1)滑走,從而顯示下方的紙張(VC2)。

所以我試着從VC1調用以下代碼來獲得VC2。但也有與它的問題:

MyVC2 *vctwo = [[[MyVC2 alloc] init] autorelease]; 

CATransition *transition = [CATransition animation]; 
transition.duration = 1; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionReveal; 
transition.subtype = kCATransitionFromRight; 
transition.delegate = self; 
[self.navigationController.view.layer addAnimation:transition forKey:nil]; 

[[self navigationController] pushViewController:vctwo animated:YES]; 

的問題如下:

  1. VC2是不固定的背景。它也可以滑入(即使我指定了kCATransitionReveal)。我想在後臺完全修復VC2。
  2. VC1淡出。我不知道爲什麼。我沒有使用kCATransitionFade之類的東西,所以我看不到淡入淡出的地方。

任何建議爲什麼我沒有得到預期的結果將非常感激。對不起,如果這是顯而易見的,但我現在試了幾個小時,真的很沮喪。

回答

1

我想做到這一點的唯一方法就是忘記UINavigationController的,並拿出我自己的機制來處理一切:

This blog explains how...

所以,如果你想風險投資之間的自定義動畫,不使用的UINavigationController 。這裏是如上所述的兩個VC之間交換的示例代碼:

-(void)slideDoorOpenTo:(UIViewController *)aController duration:(float)aDuration { 

    [aController viewWillAppear:YES]; 
    [activeController viewWillDisappear:YES]; 

    //aController.view.alpha = 0.0f; 
    [self.view insertSubview:aController.view belowSubview:activeController.view]; // so that it is below activeController 

    [aController viewDidAppear:YES]; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:aDuration]; 

    aController.view.transform = CGAffineTransformMakeTranslation(0,0); 
    activeController.view.transform = CGAffineTransformMakeTranslation(-320,0); 

    [UIView commitAnimations]; 

    [self performSelector:@selector(animationDone:) withObject:aController afterDelay:aDuration]; 


} 
3

我認爲你應該使用[[self navigationController] pushViewController:vctwo animated:NO];而不是animated:YES

+0

感謝Ole,我改變了它,VC2不再移動。應該想到它。雖然有關於淡入淡出的想法?我仍然看不到淡出動畫的來源。 –

+0

我認爲淡入淡出實際上是UINavigationController動畫的組成部分,我似乎無法擺脫它。你知道任何方式來禁用UINavigationController實現的自定義淡入淡出動畫嗎? –

相關問題