动画显示/隐藏iOS 8中UISplitViewController中的主视图

时间:2015-01-15 17:41:08

标签: ios ios8 uisplitviewcontroller

我只在iPad中使用拆分视图,iOS 8应用程序采用标准格式。 (当iPad为横向时,它会同时显示主视图和详细视图;当纵向显示全屏细节视图时,主视图从左侧滑入。)主视图和详细视图都是导航视图控制器,其中包含主视图表视图控制器。主视图表中的选择会更改详细视图。这一切都已设置并正常工作。

然而,我想做的是,在纵向方向上,在主视图表中进行选择时,主视图应该在屏幕上显示动画。其次,如果在纵向模式下启动时在主视图表中没有进行选择,我想将主视图设置为视图。

感谢任何指导。

1 个答案:

答案 0 :(得分:19)

答案是为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;
  }];
}

我在完成时将其设置回自动,因此分割视图控制器可以在动画完成后正常运行。我还在节目中添加了另一个布尔值,所以我只显示我的细节项目尚未设置但我从上面的代码中删除它,因为这是特定于您自己的代码。