2

我已經實現了一個容器視圖控制器(ios5),現在我試圖實現自定義動畫/轉換切換視圖控制器。加載視圖時導航欄跳轉

但是在實現涉及UINavigationController的任何動畫時,我遇到了一個問題,結果與預期不符。例如,如果我使用導航欄顯示控制器時從左側動畫執行翻轉操作,則導航欄的位置會保持在原始位置下方44像素處,並且在執行動畫後,導航欄將平穩移動到原來的位置,醜...

這發生在我執行的每一個動畫,所以我想它只能與導航控制器相關。

這是我使用的翻蓋過渡

[self transitionFromViewController:fromViewController 
       toViewController:toViewController 
         duration:1.0 
         options:UIViewAnimationOptionTransitionNone 
         animations:^{ 
         [UIView beginAnimations:@"animation2" context:nil]; 
         [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
         [UIView setAnimationDuration: 0.7]; 
         [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:containerView cache:NO]; 
         [UIView commitAnimations]; 
         } 
         completion:^(BOOL finished) { 
         [toViewController didMoveToParentViewController:self]; 
         [fromViewController removeFromParentViewController]; 
         }]; 

代碼我也試過以下

[self transitionFromViewController:fromViewController 
       toViewController:toViewController 
         duration:1.0 
         options:UIViewAnimationOptionTransitionFlipFromLeft 
         animations:^{ 
         } 
         completion:^(BOOL finished) { 
         [toViewController didMoveToParentViewController:self]; 
         [fromViewController removeFromParentViewController]; 
         }]; 

回答

0

設置根據iPhone或iPad的和它的方向是這樣的縱向導航欄架in iphone

[self.navigationController.navigationBar setFrame:CGRectMake(0, 20, 320, 44)]; //for iphone simarly for ipad and its orientation 

您需要將導航欄框更改爲其從狀態欄的實際位置,即加20

+0

我忘了評論整個內容是向上移動的,所以如果我設置了導航欄框架,內容視圖仍然會移動。我試圖設置兩個框架(導航欄和內容視圖),但只有導航欄移動到原始位置。 – CSharpLearning

+0

我剛剛檢查了導航欄的框架及其在viewDidLoad和viewWillAppear(x = 0,y = 0)中的正確位置。即使導航欄從y =狀態欄高度移動到y = 0 ...奇怪... – CSharpLearning

+0

在導航欄中添加y = 20將其設置正確 –

0

我也有類似的問題NavigationControllerContainer controller。實際上它是窗口底部的工具欄。我的解決方案是首先隱藏工具欄,然後在主過渡完成後用動畫顯示工具欄。它看起來像整個動畫的一部分。

這是我如何隱藏和顯示工具欄:

[toNavController setToolbarHidden:YES]; 
[self transitionFromViewController:fromViewController 
       toViewController:toNavController 
         duration:1.0 
         options:UIViewAnimationOptionTransitionFlipFromLeft 
         animations:^{ 
         } 
         completion:^(BOOL finished) { 
         [toNavController didMoveToParentViewController:self]; 
         [fromViewController removeFromParentViewController]; 

         [toNavController setToolbarHidden:NO animated:YES]; 
         }]; 
0

在viewDidLoad中設置frame.origin.y爲1。您仍然有一個跳躍,但與1個像素。