答案是動畫的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;
}];
}
我把它設回自動在完成這樣的拆分視圖控制器可以做正常的事情後,動畫完成。我還爲展會添加了另一個布爾值,所以我只顯示它,如果我的細節項目尚未設置,但我從上面的代碼中刪除它,因爲這是特定於您自己的代碼。
正是我在找什麼,但我不得不刪除完成位,否則它只是跳回到主可見再次。 – trapper 2016-01-08 04:37:51
在Xcode 7.3中,[UIDevice currentDevice] .orientation'給出錯誤消息。我建議編輯將這些事件更改爲'[UIApplication sharedApplication] .statusBarOrientation'? – David 2016-04-17 20:57:51
此外,此動畫現在導致細節表視圖的不良動畫。 – David 2016-04-17 21:03:30