【问题标题】:Animating show/hide of master view in UISplitViewController in iOS 8在 iOS 8 中的 UISplitViewController 中动画显示/隐藏主视图
【发布时间】:2015-03-14 05:05:16
【问题描述】:

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

但是,我想做的是,当在主视图的表格中进行纵向选择时,主视图应该在屏幕上显示动画。其次,如果在纵向模式下启动时没有在主视图的表格中进行选择,我想将主视图动画化到视图中。

感谢任何指导。

【问题讨论】:

标签: ios ios8 uisplitviewcontroller


【解决方案1】:

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

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

【讨论】:

  • 正是我想要的,但我必须删除完成位,否则它会再次跳回主可见。
  • 在 Xcode 7.3 中,[UIDevice currentDevice].orientation 给出错误消息。我建议进行编辑以将这些事件更改为 [UIApplication sharedApplication].statusBarOrientation?
  • 此外,此动画现在会导致详细信息表视图出现不良动画。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多