zoukankan      html  css  js  c++  java
  • ios layoutsubView 何时被调用

    -layoutSubviews方法:这个方法,在UIView中默认没有做任何事情,需要子类进行重写。UIView是一个纯净的视图,里面没有任何子控件,所以不会做什么事情。一般系统自带控件中有子控件的都会重写layoutSubviews方法,因此我们自定义系统自带控件并且重写layoutSubviews必须调用[super layoutSubviews],先布局系统自带子控件的位置和尺寸,才设置我们自己的控件位置和尺寸。

           layoutSubviews在以下情况下会被调用:
    1、init初始化不会触发layoutSubviews
       但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发
    2、addSubview会触发layoutSubviews
    3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
    4、滚动一个UIScrollView会触发layoutSubviews
    5、旋转Screen会触发父UIView上的layoutSubviews事件
    6、改变一个UIView大小 以及位置的时候也会触发父UIView上的layoutSubviews事件

    layoutSubviews方法调用先于drawRect,也就是先布局子视图,在重绘。

    - (id)initWithFrame:(CGRect)frame {    
    
    self = [super initWithFrame:frame];  
    
       if (self) {  
    
           // Initialization code      
    
               [self setNeedsLayout];      
    
       NSLog(@"%s",__func__);     
    
      }   
    
      return self; 
    
    } 
    
    - (void)layoutSubviews 
    
    {
    
         [super layoutSubviews]; 
    
        NSLog(@"%s",__func__); 
    
    } 
    
     
    
    - (void)drawRect:(CGRect)rect
    
    { 
    
        NSLog(@"%s",__func__);
    
    }
  • 相关阅读:
    《计算机网络 自顶向下方法》 第1章 计算机网络和因特网
    记一次代码优化
    不要刻意寻求局部最优解
    Eclipse Jetty插件安装
    Jetty的工作原理
    log4g 使用教程
    有用资料的网址
    Java 编程 订单、支付、退款、发货、退货等编号主动生成类
    Spring框架
    Eclipse常用快捷键大全1
  • 原文地址:https://www.cnblogs.com/llios/p/3921686.html
Copyright © 2011-2022 走看看