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__);
    
    }
  • 相关阅读:
    TMapData地图数据控件 (转贴)
    asp.net2.0 GridView 导出到 Excel
    购买电子地图数据
    MapInfo MapXtreme 2005 v6.6 Beta 1 Trial(support dotnet 2.0)
    强烈建议supermap更换BBS
    《3S新闻周刊》(转帖)
    发布一个OutlookBar控件,支持数据库绑定(完全开源)
    ERP中的计划与控制
    企业的生产特征
    eaby技术架构变迁
  • 原文地址:https://www.cnblogs.com/llios/p/3921686.html
Copyright © 2011-2022 走看看