2015-01-15 73 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

相关问题