iOS 开发 - 改善APP的流畅度 (绘制股票行情)
这几天做了一个查看股票行情的app.
完成之后,当k线比较多的时候,app 对于捏合、拖动手势的反应不太流畅,
主要原因是drawRect: 干的活太多, 竟然需要40ms+, fps 自然不高
最后按照下面这些原则,进行调整修改,流畅度提高不少,大多数的绘制时间控制在了10ms左右
总结如下:
1. 尽量不要实现drawRect(每次调用该方法时,都要为backing store分配内存,非常消耗CPU)
2. 避免在drawRect:中进行耗费大量CPU资源的工作
2. 尽量少调用setNeedsDisplay:(视图内容变化时才调用)
3. 考虑使用setNeedDisplayInRect: , 传入drawRect:的rect越小,stoke,fill的时间越少, 即使drawRect:是根据视图边界绘制的)
4. 充分利用GPU的资源,直接设置layer的border,shadow,corner,gradient等属性, GPU将会处理这些属性(相反如果GPU紧张,CPU空闲,应由CPU处理,可在drawRect:中实现)
5. 如果绘制很多东西到一个视图时,可尝试开启drawsAsynchronusly,那么GPU会将视图内容绘制到backing store中,但是开启后,内存会增加,因此需要评估开启前后性能的变化,谨慎使用。
代码:https://github.com/beddup/TradeTraining/tree/master
“交流使人进步”