2015-01-15 104 views
8

我只在iPad中使用分割視圖,標準形式的iOS 8應用程序。 (當iPad橫向顯示時,它顯示主視圖和詳細視圖;縱向顯示時,全屏顯示詳細視圖,並具有從左側滑入的主視圖。)主視圖和詳細視圖都是導航視圖控制器,其中主控包含一個表格視圖控制器。主視圖表中的選擇會更改詳細視圖。這是所有設置和正確工作。在iOS 8的UISplitViewController中動畫顯示/隱藏主視圖

然而,我想要做的是在主視圖的表中選擇縱向時,主視圖應該在屏幕上進行動畫顯示。其次,如果在縱向模式下啓動時在主視圖的表格中尚未做出選擇,我想將主視圖動畫化爲視圖。

任何指導表示讚賞。

回答

18

答案是動畫的preferredDisplayMode屬性。要顯示的代碼是:

if (UIInterfaceOrientationIsPortrait([UIDevice currentDevice].orientation)) { 
    [UIView animateWithDuration:ANIMATION_LENGTH animations:^{ 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay; 
    } completion:^(BOOL finished) { 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
    }]; 
} 

和隱藏代碼:

if (UIInterfaceOrientationIsPortrait([UIDevice currentDevice].orientation)) { 
    [UIView animateWithDuration:ANIMATION_LENGTH animations:^{ 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
    } completion:^(BOOL finished) { 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
    }]; 
} 

我把它設回自動在完成這樣的拆分視圖控制器可以做正常的事情後,動畫完成。我還爲展會添加了另一個布爾值,所以我只顯示它,如果我的細節項目尚未設置,但我從上面的代碼中刪除它,因爲這是特定於您自己的代碼。

+0

正是我在找什麼,但我不得不刪除完成位,否則它只是跳回到主可見再次。 – trapper 2016-01-08 04:37:51

+0

在Xcode 7.3中,[UIDevice currentDevice] .orientation'給出錯誤消息。我建議編輯將這些事件更改爲'[UIApplication sharedApplication] .statusBarOrientation'? – David 2016-04-17 20:57:51

+0

此外,此動畫現在導致細節表視圖的不良動畫。 – David 2016-04-17 21:03:30

相關問題