iPhone 上的纵向 UISplitViewController 在 iOS 8 中始终显示主视图和细节视图

2024-06-20

UISplitViewController in portrait在 iPhone 上始终显示主控和细节iOS 8

我尝试子类化UISplitViewController并将其配置为同时显示主视图和细节视图。但没有任何效果。

class APPSplitViewController: UISplitViewController, UISplitViewControllerDelegate {

    override func viewDidLoad() {

        super.viewDidLoad()
        preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
        maximumPrimaryColumnWidth = 32.0
        minimumPrimaryColumnWidth = 32.0
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

How to?


UISplitViewController 仅在水平常规环境中使用并排显示(新 TraitCollection 大小)

分割视图控制器根据可用空间确定其子视图控制器的排列。在水平规则环境中,分割视图控制器尽可能并排呈现其视图控制器。在水平紧凑的环境中,分割视图控制器的作用更像是导航控制器,最初显示主视图控制器,并根据需要推送或弹出辅助视图控制器。您还可以通过为首选显示模式 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISplitViewController_class/index.html#//apple_ref/occ/instp/UISplitViewController/preferredDisplayMode财产。

解决方案。 您必须更改 SplitViewController 的 TraitCollection。如何做到这一点:

  • 创建一个 ViewController 并将您的 SplitViewController 添加为子级。
  • 使用 size .Regular 为您的孩子覆盖 TraitCollection (UISplitViewController)

视图控制器包装器

class TraitOverrideViewController: UIViewController {

 override func viewDidLoad() {
    super.viewDidLoad()
    configureSplitVC()
  }


  private func configureSplitVC() {

    let splitVC = self.childViewControllers[0] as UISplitViewController
    setOverrideTraitCollection(UITraitCollection(horizontalSizeClass: .Regular), forChildViewController: splitVC)
  }
}

在 iOS 8 中 UISplitViewController 使用自适应用户界面 https://developer.apple.com/design/adaptivity/和 TraitCollections 显示其内容。
它根据视图的大小和类型显示不同的样式。您可以通过我上面解释的技术进行更改。
您可以在 WWDC 视频中获取更多信息使用 UIKit 构建自适应应用程序 https://developer.apple.com/videos/wwdc/2014/?id=216

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone 上的纵向 UISplitViewController 在 iOS 8 中始终显示主视图和细节视图 的相关文章

随机推荐