layoutSubviews方便数据计算
layoutifneeded也采用了同样的机制来避免资源的重复调用资源浪费!
drawRect方便视图重绘:
假设采用直接调用drawRect的机制,先考虑这样问题 ,有两个UIViewControllerA和B,A为当前view的viewController,如果此时在A中调用[B.view drawRect],这样B的view无论如何都会调用drawRect的方法重新绘制一遍,这样问题就出来了,有必要吗,毕竟现在显示的是A中的view!B重新绘制一遍就调用了drawRect中的方法,浪费系统资源啊,而通过Displayifneeded,ios会判断需不需要调用drawRect方法,这样就避免了资源的重复调用!
layoutSubviews不触发:
1、初始化init事件的调用不会触发相对应的实例对象值内存中的layoutSubviews事件。
2、元件实例对象值内存中的frame发生变化并且元件实例对象值同时伴随手工触发layoutIfNeeded事件,则会自动触发layoutSubviews事件。
layoutSubviews触发:
1.addSubview:事件的调用会触发所添加的子渲染图实例对象值内存中的layoutSubviews事件。
2.滚动ScrollView滚动渲染图会对直接承载于ScrollView上的直接子层元件内存中的layoutSubviews事件自动触发。
3.旋转Screen会触发ViewController直接绑定的View渲染层图/子层图上内存中的layoutSubviews事件。
4.改变某个View大小的时候也会触发对应父View上内存中的layoutSubviews事件。
5.直接调用layoutSubviews事件。
drawRect事件以下情况会被调用: