美文网首页
layoutSubviews、drawRect、awakeFro

layoutSubviews、drawRect、awakeFro

作者: 杨大虾 | 来源:发表于2017-07-03 11:52 被阅读77次

    mark:

    1.iOS - layoutSubviews、drawRect、awakeFromNib和 loadNibNamed解释

    摘要:

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

    其中setNeedsLayout,因为如果要动态调一些东西,可能会常用一点。

    2.[iOS]通过xib自定义cell的时候在awakeFromNib方法里面修改view的frame无效

    摘要:

    当自定义cell是从xib创建时,系统会调用awakeFromNib方法,而且这个方法是当所有条件完成,比如建立了outlet,事件等等,是不是也可以假定cell里面的元素位置都初始化完了。而drawRect有一种渲染的效果,当系统发现屏幕分辨率发生变化了,就会执行这个方法把新的位置重新显示在屏幕上。

    3.loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的调用时间及用法

    摘要:

    1. loadView

    无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。

    > 手工创建视图时,loadView被调用时self.view还为nil。一般在该方法中手工定制view。
     > XIB创建视图时,loadView仍会被系统调用、loadView被调用时XIB定制的视图还没创建完成,若是再覆写该方法的话、会将XIB定制的视图覆盖掉。
    

    所以,纯手工定制视图时,一般在该方法中写;

    XIB定制视图时、一定不要覆写该方法。

    PS:换言之,loadView的作用等同于xib

    4.iOS UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释

    相关文章

      网友评论

          本文标题:layoutSubviews、drawRect、awakeFro

          本文链接:https://www.haomeiwen.com/subject/evpacxtx.html