layoutSubviews数据计算/drawRect视图重绘:

本文探讨了iOS开发中的`layoutSubviews`和`drawRect`方法。`layoutSubviews`用于数据计算,避免不必要的资源浪费,而`drawRect`用于视图重绘。文中详细解释了何时触发`layoutSubviews`和`drawRect`,以及它们的调用机制,强调了合理使用以优化性能的重要性。
摘要由CSDN通过智能技术生成

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事件以下情况会被调用:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaiJunYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值