Swift UI 18 视图的层级关系

1:简介

1:同一父视图情况下,后被加入的子视图,在更上一层
2:子视图在数组中排列的顺序,就是被添加进去的顺序

2: 方法

(1):找到任意层的btn,将其放到最外层
bringSubviewToFront

(2): 获取任意层的btn,将其放到最底层
sendSubviewToBack

(3):insertSubview方法有两个作用,1.如果被插入的视图,还未与父视图建立父子视图关系,那么插入方法,会把该视图与父视图建立起父子视图关系。 2.调整视图的层次关系

(4)表示层数之间进行交换 比如:exchangeSubviewAtIndex:3 withSubviewAtIndex:1 表示第4层和第2层进行交换,当找不到层数时,不会进行交换 (不是指frame.而是指层数) (层数的计算从0开始)

具体代码如下:

func createSuperView(){
        let superView = UIView.init(frame: UIScreen.mainScreen().bounds)
        superView.backgroundColor = UIColor.redColor()
        self.view.addSubview(superView)
        
        for i in 0...2 {
            let button = UIButton.init(type: .System)
            button.frame = CGRect(x: 50 + 50 * i, y: 200 + 50 * i, width: 100, height: 100)
            button.backgroundColor = UIColor.init(red: CGFloat(arc4random_uniform(256)) / 255, green: CGFloat(arc4random_uniform(256)) / 255, blue: CGFloat(arc4random_uniform(256)) / 255, alpha: 1)
            button.setTitle("我是\(i + 1)号btn", forState: .Normal)
            button.tag = i + 11
            button.titleLabel?.adjustsFontSizeToFitWidth = true
            superView.addSubview(button)

    }

        //同一父视图情况下,后被加入的子视图,在更上一层
        //子视图在数组中排列的顺序,就是被添加进去的顺序
        
        //1:找到任意层的btn,将其放到最外层
        let btn = superView.viewWithTag(12)
        superView.bringSubviewToFront(btn!)
        
        //获取任意层的btn,将其放到最底层
        let btn_btn = superView.viewWithTag(13)
        superView.sendSubviewToBack(btn_btn!)

        //插入一个视图
        let label = UILabel.init(frame: CGRectMake(75, 225, 150, 150))
        label.backgroundColor = UIColor.purpleColor()
        
        //2:insertSubview方法有两个作用,1.如果被插入的视图,还未与父视图建立父子视图关系,
//那么插入方法,会把该视图与父视图建立起父子视图关系。 
//2.调整视图的层次关系
        
        //把某个视图,插入到下标为4的层级上
//           superView.insertSubview(label, atIndex: 1)
        
        //把某个视图,插入到tag=11的视图的上层
//            superView.insertSubview(label, aboveSubview: superView.viewWithTag(11)!)

        //把某个视图,插入到tag=11的视图的下层
           superView.insertSubview(label, belowSubview: superView.viewWithTag(11)!)
        
        //3:表示层数之间进行交换  比如:exchangeSubviewAtIndex:3 withSubviewAtIndex:1 表示第4层和第2层进行交换,当找不到层数时,不会进行交换 (不是指frame.而是指层数)  (层数的计算从0开始)

        superView.exchangeSubviewAtIndex(0, withSubviewAtIndex: 1)
        
        print(superView.subviews)
  }

你可能感兴趣的:(Swift UI 18 视图的层级关系)