contraints,frame → layout→draw

2017-02-23  本文已影响15人  phpios
  • (CGSize)sizeThatFits:(CGSize)size
1️⃣layoutSubviews在以下情况下会被调用:
1、init初始化不会触发layoutSubviews

(但是是用initWithFrame初始化时,当rect的值不为CGRectZero时,会触发)

2、addSubview会触发layoutSubviews

3、设置子view的frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

4、滚动一个UIScrollView会触发layoutSubviews

5、旋转Screen会触发父UIView上的layoutSubviews事件

6、改变一个子View大小的时候也会触发父UIView上的layoutSubviews事件
2️⃣布局

重写layoutSubviews方法,主要用在自定义UI控件类里.
(像UIButton类里肯定重写了此方法)

注:

// 经常连起来用来做立即布局
[view setNeedsLayout];
[view layoutIfNeeded];
3️⃣重绘

sizeToFit会自动调用sizeThatFits方法;
sizeToFit不应该在子类中被重写,应该重写sizeThatFits
sizeToFit可以被手动直接调用
sizeToFit和sizeThatFits方法都没有递归,对subviews也不负责,只负责自己

=======================================

initWithNibName:bundle: (加载带有XIB的控制器)
loadView (控制器的View为空的时候调用,帮控制器加载View)
initWithCoder: (是当从nib文件中加载对象的时候会调用)
awakeFromNib (当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象)
initWithFrame: (代码创建View时调用,是懒加载,只有到需要显示时,子控件才不是 nil)
init(代码使用创建控件alloc init 时,系统底层调用init方法)

上一篇 下一篇

猜你喜欢

热点阅读