• UIView常用方法


      建立父子关系

        UIView * greenView = [[UIView alloc] init];

        建立父子关系的同时,这个addSubview内部还干了什么其他事情? 会在父亲视图中,保存一个子视图的强指针

        [baseView addSubview:greenView];

         // greenView.frame = baseView.bounds;(从addsubview中可得)

        greenView.backgroundColor = [UIColor greenColor];

        self.greenView = greenView;

        使用tag作为视图的临时标记,方便在父亲对象中直接找到该子视图

        greenView.tag = 10;

     

    这两个方法都是有由 系统自动调用

    调用了父子addsubview方法之后就会调用,并且,会将新的父控件对象,作为参数,传递进来,那么在该方法中,就可以使用父亲对象的一些属性作为参考

    - (void)willMoveToSuperview:(UIView *)newSuperview

    {

        NSLog(@"%@",NSStringFromSelector(_cmd));

       设置自己的Frame与父亲组件完全重合

        self.frame = newSuperview.bounds;    

    }

    这个方法,在子视图,已经完成添加,显示之后会调用

    - (void)didMoveToSuperview

    {

        NSLog(@"%@",NSStringFromSelector(_cmd));

    }

    - (void)didAddSubview:(UIView *)subview

    {

        完成添加之后调用

    }

    - (void)willRemoveSubview:(UIView *)subview

    {

        执行了removeFromSuperView 即将删除子控件的时候调用,并且会把即将删除的子控件对象作为参数传递进来

    }



      插入一个视图

     [self.baseView insertSubview:yellowView atIndex:0];

      把新添加的视图,放到某一个视图的后面

       [self.baseView insertSubview:yellowView belowSubview:greenView];

      把新添加的视图,放到某一个视图的前面

       [self.baseView insertSubview:<#(UIView *)#> aboveSubview:<#(UIView *)#>]



       把某一个视图放到最上层显示

        [self.baseView bringSubviewToFront:self.greenView];

        

        把某一个视图,挪到最后面

        [self.baseView sendSubviewToBack:self.yellowView];

          解除父子关系,removeFromSuperview

          子控件自己与父亲解除关系  [self.greenView removeFromSuperview];

         父亲控件与子控件解除父子关系

        /*

        //1.获得子控件

         //数组中保存对象的指针,默认是对象的强指针,所以每次调用addSubView方法,都会将该对象的强指针保存到subviews数组中,掉removeFromSuperview方法,会将自己保存在父亲subViews数组中的强指针移除,如果外界再没有强指针指向的话,就会被系统回收

        NSArray * subViews = [self.baseView subviews]; //获得被自己管理的所有子控件对象

        for(UIView * tmpView in subViews)

        {

          2.取出每一个子视图,并且与父亲解除父子管理关系

            [tmpView removeFromSuperview];

        }

        */

        

        /*

        //通过viewWithTag 找到具体的一个子视图

        //这种方式,不见在实际的开发中过多的使用,因为用数字作为标记,意义不是很明确,而且容易忘记

        UIView * greenView = [self.baseView viewWithTag:10];

        [greenView removeFromSuperview];

        */

     

        

     
  • 相关阅读:
    js设置与获取Cookie
    js,正则应用
    Ajax支持跨域之Web API实现
    RSA加密解密在jsencrypt+c#的实现-博客园加密登录
    转:sqlserver无法创建索引,超时时间已到解决办法
    【转】asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
    c#连接SFTP上传文件
    mac 修改mysql root密码
    Vue学习手记09-mock与axios拦截的使用
    Vue学习手记08-vue-cli的启动过程
  • 原文地址:https://www.cnblogs.com/CLiOS/p/5281075.html
Copyright © 2020-2023  润新知