layoutSubviews、drawRect、awakeFromNib和 loadNibNamed

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 方法之间的关系解释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:http://blog.csdn.net/xiaohe901216/article/details/50...
    小曼blog阅读 1,026评论 0 2
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 705评论 0 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,203评论 30 471
  • 172.简述视图控制器的生命周期。 1)init函数(init;initWithFrame;initWithCod...
    AlanGe阅读 389评论 0 0
  • 如同花草树木肆意生长 管什么他人目光 你难道能活成所有人喜欢的模样吗 亲爱的自己 你仅仅是你而已 你只需要活的像自...
    浅笑安然青阅读 225评论 0 0