iOS 8 中 UISplitViewController 主视图的动画 show/hide

Animating show/hide of master view in UISplitViewController in iOS 8

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

但是,我想要做的是,当在主视图 table 中进行纵向选择时,主视图应该在屏幕外显示动画。其次,如果在纵向模式下启动时未在主视图 table 中进行选择,我想将主视图设置为动画。

感谢任何指导。

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

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