ios学习之uisplitview的学习

splitview是很多视图的分割,在ipad和iphone上的表现是不同的,应为ipad屏幕够宽,但iphone 6 plus 不同 因为其很宽,可以容纳很多,当在长或者宽不够的时候,会变成导航视图,来进行控制

ios学习之uisplitview的学习_第1张图片

下面是一些iphone的各尺寸

ios学习之uisplitview的学习_第2张图片

下面是具体的一个流程

ios学习之uisplitview的学习_第3张图片

首先把原先的视图全部删除掉,拖进来一个viewcontroller,在view controller中拖进一个contain view ,并且再拖进一个splitview 在contain view 中 将split view 包含进来 用 embed in  最后主视图如图所示



ios学习之uisplitview的学习_第4张图片

随后主代码部分就是为了为这个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)
}
}

 


你可能感兴趣的:(ios学习之uisplitview的学习)