ios - UISplitViewController:从 Compact 旋转到 Regular 时如何防止扩展

标签 ios uisplitviewcontroller uisplitviewdelegate uitraitcollection

补充问题有很多答案,即如何防止在从 RegularCompact 界面更改时过渡到 PrimaryOverLay , 例如使用

func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool

在我的例子中,我有一部 iPhone 6+,细节 View 以纵向显示。当我将设备旋转到水平位置(CompactRegular)时,我希望主视图保持隐藏状态。我试过在很多地方将 preferredDisplayMode 设置为 .PrimaryHidden,但没有明显的影响。谷歌搜索一无所获。

最佳答案

好吧,在我写完问题后,但在发布之前,我绊倒了 possible solution ,这是为了覆盖 Split View Controller 引用的特征集合。

我采纳了这个想法并决定将 UISplitViewController 子类化,并覆盖 traitCollection 属性。成功了:

final class MySplitViewController: UISplitViewController {
  var didOnce = false
  override var traitCollection: UITraitCollection {
    let old = super.traitCollection
    let change = UITraitCollection(horizontalSizeClass: .Compact)
    let new = UITraitCollection(traitsFromCollections: [old, change])
    return new
  }

显然,这是针对一台设备进行的硬编码 - 稍后我将添加一些可用于控制实际返回内容的函数。

关于ios - UISplitViewController:从 Compact 旋转到 Regular 时如何防止扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151380/

相关文章:

ios - 在 Swift 中绘制 CGContext 后重绘它?

iphone - 如何在 iphone sdk 中播放像 youtube 播放器这样的视频?

ios7 - UISplitviewController导航栏之间的白线

ios - SplitView 的 displayModeButtonItem 在 iPad (iOS8) 上不显示标题

iphone - 在核心数据后台填充期间处理应用程序终止

ios - 如果使用 "ActiveLabel.swift"标记单词有空格,它将标记失败 - swift

ios - iPad Split View Controller : Reloading the root view controller's tableview from the detail view controller

iphone - SplitViewController 委托(delegate)方法没有响应

ios - 具有多个详细 View 的 UISplitView(带有 Storyboard )