zoukankan      html  css  js  c++  java
  • UIView

       一个UIView的实例就是一个视图,表示屏幕上的一块矩形区域。

        作用 : 负责这块矩形区域的描绘以及和用户的交互。

        第一、UIView的可视化属性

              1. backgroundColor  背景属性

          例如:

            //创建UIView对象                bounds编辑

             UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 220, self.view.bounds.size.height-100)];

             //设置view1的背景颜色

             view1.backgroundColor = [UIColorpurpleColor];

              2. hidden  表示该view是否隐藏,

              hidden属性为YES时视图隐藏,否则不隐藏。

              3. alpha  为0时完全透明,为1时完全不透明
              

             注意事项:        

                    当视图完全透明或者隐藏时,不能响应触摸消息。   

                   也就是alpha等于0.0或者hidden为YES的时候,但是当alpha<0.01的时候,视图就已经接收不到消息了。

                   视图的alpha值会影响子视图的绘制,但是子视图的alpha值不变。

               4.User Interaction Enable: 指定用户能否对此对象操作

               5.Multiple Touch:指定此控件是否接收多点触控

       第二,管理视图的层次

              一个UIView只有一个superview,我们可以通过-(UIView*)superview来得到视图的父视图;

              一个UIView有零或者多个superview,我们通过方法-(NSArray*)subviews来得到当前视图的所有子视图,这些子视图

              都放在了一个数组中,然后把数组返回出来。

              NSArray *arr = self.view.subviews;//得到所有的视图

             1. insertSubview:atIndex:插入视图

             2.insertSubview:aboveSubview:插入视图在某个子视图的上面

             3.insertSubview:belowSubview:插入视图在某个子视图的下面

             4.bringSubviewToFront:把子视图放到最前面

             5.sendSubviewToBack:把子视图放到最后

             6.exchangeSubviewAtIndex:withSubviewAtIndex:变换两个视图的前后顺序

             7.removeFormSuperview 从父视图中移除

          例如:

      
         //创建一个按钮
         UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];  
    
           button.backgroundColor=[UIColor redColor];  
    
          [self.view addSubview:button];  
    
             UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)]     autorelease];  
     
            button2.backgroundColor=[UIColor blueColor];  
    
            [self.view addSubview:button2];  
    
            [button removeFromSuperview];  
    

       第三 ,layoutSubviews

         layoutSubviews在以下情况下会被调用:

        1、init初始化不会触发layoutSubviews

        2、addSubview会触发layoutSubviews

        3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

        4、滚动一个UIScrollView会触发layoutSubviews

        5、旋转Screen会触发父UIView上的layoutSubviews事件

        6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

        注意:UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿  到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。
    宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据

       第四,tag

           属性UIView的所有子类都有此属性,用于开发人员设置额外值,常用于同一方法被多个组件触发。

          例如:

        //得到当前的触发事件

        UIView *tempView = (UIView*)[self.view viewWithTag:1001];

      总结:

         视图都实添加到界面上才能显示的,每一个视图控制器都有一个属性UIView类型的,就是当前显示的界面,在它的上面我们还可以添加视图。

         视图相当于一个容器,可以添加一些其他的视图或控件,这中包含关系我们称之为子父视图的关系,容器视图为父视图,被添加的视图为子视图。

         每个视图都有frame和bounds属性,其中包含坐标和大小,frame是相对于父视图坐标系来说的,bounds是相对于自身坐标系来说的。

         越早添加的视图越在容器视图的低部,越晚添加的视图越在顶部,即晚加入的视图有可能会覆盖住早加进去的视图。

         

     

  • 相关阅读:
    8-6.布局元素实战
    Unity3D NGUI插件(3.12/2018/2019)
    GoLang 数据结构-二叉树
    GoLang 数据结构-哈希表(散列表)
    GoLang 四大经典排序(冒泡排序,选择排序,插入排序,快速排序)写法及执行效率
    GoLang 数据结构-单向链表,双向链表,单向环形链表
    GoLang 数据结构-环形队列
    GoLang 数据结构-稀疏数组
    GoLang 海量用户聊天系统(TCP-Socket网络编程+Redis数据库+协程)
    GoLang 使用协程和管道获取随机数
  • 原文地址:https://www.cnblogs.com/taopengcun/p/3735065.html
Copyright © 2011-2022 走看看