splitview是很多视图的分割,在ipad和iphone上的表现是不同的,应为ipad屏幕够宽,但iphone 6 plus 不同 因为其很宽,可以容纳很多,当在长或者宽不够的时候,会变成导航视图,来进行控制
下面是一些iphone的各尺寸
下面是具体的一个流程
首先把原先的视图全部删除掉,拖进来一个viewcontroller,在view controller中拖进一个contain view ,并且再拖进一个splitview 在contain view 中 将split view 包含进来 用 embed in 最后主视图如图所示
随后主代码部分就是为了为这个view controller在定义 为一个父视图
class traidOverrideController: UIViewController {
//将新创建的viewcontroller包含经来,其为父控制器
//整段代码就在做这个
//首先定义在视图翻转的时候,其尺寸该怎么变化
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
//自定义一个trait 具体也没搞懂
var trait:UITraitCollection?
//414是把6 plus 排除在外后,其他iphone的宽度
if size.width < 414 {
trait = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Regular)
}
else {
trait = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Compact)
}
//覆盖下面的子视图 第一个视图 childviewcontroller.first 好像在ios8中会报错,因为其为anyobject 需要强制转化成 uiviewcontroller 不过 在ios9中貌似已经修复了这个问题,因此只要解包一下就好了,不需要强制转化
setOverrideTraitCollection(trait, forChildViewController: childViewControllers.first!)
//让其他的子视图也能进行相应的覆盖
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
}
}