【问题标题】:iOS 9 Split View App Resizing StrategyiOS 9 拆分视图应用程序大小调整策略
【发布时间】:2015-12-04 20:47:25
【问题描述】:

我有一个想要启用拆分视图的应用。 iPhone 与 iPad 的 UI 略有不同(紧凑与常规宽度)。

在紧凑宽度模式下,我有一个 UITableView,其中包含用户可以选择的项目列表,当他们这样做时,我将一个新的 View Controller 推送到导航堆栈上。但是,在常规宽度中,UITableView 列表显示在左侧,然后我在右侧有一些其他视图(未在 UISplitViewController 中实现)。所以我在 2 个不同的 ViewController 类中实现了这 2 个不同的屏幕。

如果我的用户使用的是常规宽度的 iPad,然后使用我的应用进入拆分视图并导致应用更改为紧凑宽度,我需要更改要向用户显示的 ViewController。最好的策略是什么?

注意:我没有使用故事板。

谢谢!

【问题讨论】:

  • 听起来就像 UISplitViewController 旨在处理的导航类型

标签: ios objective-c ipad splitview


【解决方案1】:

我有两种方法可以解决这个问题。一,你可以看看UISplitViewControllerDelegate,特别是关于折叠和扩展界面的部分。

另一种解决方案是覆盖您的尺寸集合,以便 iPhone 和 iPad 上的显示相同,因为没有任何东西折叠和展开,两个视图始终“存在”。您可以将拆分视图控制器的 preferredDisplayMode 设置为在 iPhone 上看起来不错的 Overlay。您需要做的就是添加

UITraitCollection* horizTrait = [UITraitCollection
                                 traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
UITraitCollection* vertTrait = [UITraitCollection
                                traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
UITraitCollection* childTraits = [UITraitCollection
                                  traitCollectionWithTraitsFromCollections:@[horizTrait, vertTrait]];

[self setOverrideTraitCollection:childTraits forChildViewController:self.childViewControllers[0]];

到你UISplitViewController的父类(如果没有父类,你必须创建一个。这可以只是一个简单的导航控制器)

编辑:我应该提到,上面的代码只是将设备的特征设置为所有设备的常规-常规。

【讨论】:

    【解决方案2】:

    感谢您的回复。我在想也许我应该使用状态恢复,然后根据我的特征集合恢复不同的视图控制器。

    相反,我想我只需要创建一个视图控制器容器,然后在 willLayoutSubviews 中,我将根据当前视图的特征集合来决定要显示哪些视图控制器。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多