2012-05-02 41 views
1

我創建了一個帶旋轉支持的簡單iPad應用程序。它有兩個視圖控制器First View Controller自動加載爲AppDelegaterootViewController。它上面有一個按鈕,點擊後可將rootViewControllerAppDelegate更改爲Second View ControllerSecond View Controller有一個按鈕,它將rootViewController設置回First View Controller。這項工作完美地在肖像模式。但是,當我旋轉模擬器風景模式,並點擊上First View Controller的按鈕加載Second View Controller,它根據裝置(未旋轉)首先顯示Second View,然後旋轉顯示正常(風景)完成動畫後。出了什麼問題? 在AppDelegate的方法來設置View Controllers如下:iOS - 在旋轉時無法在iPad中正確加載視頻

(void)loadSecondView 
{ 
    SecondView *secondViewController = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES ];  
    self.window.rootViewController = secondViewController; 
    [UIView commitAnimations];  
} 


(void) removeSecondView 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES ]; 
    self.window.rootViewController = self.firstViewController; 
    [UIView commitAnimations];  
} 

回答

0

基本上你包裹在動畫塊內部的兩個操作。

  1. 作出新的視圖控制器的根視圖
  2. 顯示捲曲動畫

結果這一觀點,您在動畫中看到兩個操作。

  1. 新視圖添加到窗口,它是基於設備的方向
  2. 捲曲動畫使得可見新視圖

可以通過應用以下更改解決此問題旋轉:

- (void)loadSecondView { 
    SecondView *secondview = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
    self.window.rootViewController = secondview; 
    self.window.rootViewController.view.hidden = YES; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES ];  
    self.window.rootViewController.view.hidden = NO; 
    [UIView commitAnimations]; 
} 

- (void)removeSecondView { 
    self.window.rootViewController = self.viewController; 
    self.window.rootViewController.view.hidden = YES; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES ]; 
    self.window.rootViewController.view.hidden = NO; 
    [UIView commitAnimations]; 
} 

基本上,我們添加的視圖沒有任何動畫效果,對於過渡動畫,我們使用視圖的隱藏屬性。

HTH。

+0

非常感謝穆斯塔法。這是有道理的。 我已經實施瞭解決方案,它的工作就像一個魅力。 謝謝。 –

相關問題