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];

      

      

  • 相关阅读:
    Android Studio下载及离线升级方法
    动态调用WebService
    哈哈哈 终于通过自己的努力 把这个模板上长毛的土豆去掉了
    关于“只有注册用户登录后才能阅读该文”
    SQL Server 2008 R2——根据数据查找表名和字段名 根据脏数据定位表和字段
    Windows驱动——虚拟机 虚拟串口 双机调试
    协议——如何制作一个简易的串口通信协议
    问题解决——复合检测项目的定义和使用
    算法——成语首尾接龙 成语接龙
    C++基础——函数指针 函数指针数组
  • 原文地址:https://www.cnblogs.com/Mr-Lin/p/5098443.html
Copyright © 2011-2022 走看看