zoukankan      html  css  js  c++  java
  • UIView

      /*

         图层关系

         子视图 嵌套在父视图之上的视图

         父视图 被嵌套的视图

         视图和视图之间可以层层嵌套

         */

        UIView *red = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 100, 100)];

        red.backgroundColor = [UIColor redColor];

       

        //1.在父视图上嵌套一个子视图

        [self.window addSubview:red];

        

        //2.如何获取父视图(仅有一个)

        UIView *window = [red superview];

        //通过地址相同可知道,这是同一个window

        NSLog(@"%p",self.window);

        NSLog(@"%p",window);

        

        // 3.获取子视图(可以有多个)[注意]返回值是一个数组

        NSArray *subViews = [self.window subviews];

        NSLog(@"%lu",[subViews count]);

        

        //4.删除一个视图

        //[red removeFromSuperview];

        

        UIView *blue = [[UIView alloc]initWithFrame:CGRectMake(60, 110, 100, 100)];

        blue.backgroundColor = [UIColor blueColor];

        [self.window addSubview:blue];

        

        //5.将一个视图放在父视图前面

        //[self.window bringSubviewToFront:red];

        

        //6.将一个视图放在父视图后面

        //[self.window sendSubviewToBack:blue];

        

        UIView *yellow = [[UIView alloc]initWithFrame:CGRectMake(70, 120, 100, 100)];

        yellow.backgroundColor = [UIColor yellowColor];

        //可以用以下4种方法将yellow视图添加到window

        //[self.window addSubview:yellow];

        

        //7.在某个视图的后面插入一个视图

        //[self.window insertSubview:yellow belowSubview:red];

        

        //8.在某个视图的前面插入一个视图

        //[self.window insertSubview:yellow aboveSubview:red];

        

        //9.利用下标在指定位置插入

        //坐标index是从内部算起

        [self.window insertSubview:yellow atIndex:2];

     

        //***************分割线*******************

        //10.交换两个视图

        //[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:2];

        

        //检查某个视图是否为子孙视图或本身

        BOOL is = [red isDescendantOfView:self.window];

        NSLog(@"%d",is);

        

        //黄色视图的左上角为原点

        UIView *green = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];

        green.backgroundColor = [UIColor greenColor];

        [yellow addSubview:green];

        //将黑色视图作为子视图放在黄色父视图中

        UIView *black = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)];

        black.backgroundColor = [UIColor blackColor];

        [yellow addSubview:black];

        

        //11.裁剪超出父视图之外的部分

        yellow.clipsToBounds = YES;

        NSLog(@"%ld",[self.window subviews].count);

        

        //12.隐藏一个视图

        //black.hidden = YES;

        //倘若父视图被隐藏了,那么它的子视图也将要被隐藏

        //yellow.hidden = YES;

        

        //13.透明度:如果父视图被设置透明度,父视图上的所有子视图也会被一起设置透明度

        //yellow.alpha = 0.6;

        

        //以下方式可以设置父视图的透明度,子视图不受影响

        yellow.backgroundColor = [[UIColor yellowColor] colorWithAlphaComponent:0.5];

        

        //14.用户交互的设置

        //YES 用户交互打开 (用户可以操作这个UI控件)

        //NO 用户交互关闭 (用户不可以操作这个UI控件)

        /*

         UIView 默认情况交互打开

         UIButton 默认用户交互打开

         UIImageView 默认用户交互关闭

         UILabel 默认用户交互关闭

         */

        //先访问 window屏幕

        //再访问 self.view (根控制器) -- 实际上也是UIView

        //之后访问 self.view 中的子视图  myImageView

        //最后访问 子视图myImageView中嵌套的子视图 myUIView

        //如果其中一个环节关闭了用户交互 那么下面的子视图都不能访问到

        window.userInteractionEnabled = YES;

        /*

         【注】

        1⃣️用户交互层层传递,其中有一个视图的用户交互关闭,则不会继续往下传递

        2⃣️子视图不要超过父视图的边界 否则也会改层终止传递 用户交互也是无效的(即使你已经在父视图打开用户交互)

        */

            

        //15.销毁一个视图(removeFromSuperview

        //将一个控件从其父视图中移除

        //[注意] 移除是有跟随性的 子视图也会全部移除

        [yellow removeFromSuperview];

      

      

  • 相关阅读:
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    125. Valid Palindrome
    124. Binary Tree Maximum Path Sum
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    120. Triangle
    119. Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/Mr-Lin/p/5098443.html
Copyright © 2011-2022 走看看