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

时间:2014-10-31 09:09:04

标签: swift ios8 uisplitviewcontroller

iPhone上的人像中的

UISplitViewController始终在 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()
    }
}

如何?

1 个答案:

答案 0 :(得分:3)

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

  

拆分视图控制器根据可用空间确定其子视图控制器的排列。在水平常规环境中,分割视图控制器尽可能并排显示其视图控制器。在水平紧凑的环境中,分割视图控制器更像是导航控制器,最初显示主视图控制器并根据需要推送或弹出辅助视图控制器。您还可以通过为preferredDisplayMode属性赋值来要求拆分视图控制器更喜欢特定的排列。

解。 您必须更改SplitViewController的TraitCollection。怎么做:

  • 创建一个ViewController并将您的SplitViewController添加为子项。
  • 覆盖traitCollection的大小。规则为你的孩子(UISplitViewController)

ViewController Wrapper

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使用Adaptive User Interfaces和TraitCollections来显示其内容。
它根据视图的大小和类型显示不同的样式。您可以通过上面解释的技术进行更改 您可以在WWDC视频中获取有关Building Adaptive Apps with UIKit

的更多信息