我一直在做一些iOS绘图的实验。为了进行实际练习,我编写了一个BarChart组件。下面是类图(嗯,我不允许上传图片),所以让我用文字来写。我有一个NGBarChartView,它继承自UIView,有两个协议NGBarChartViewDataSource和NGBarChartViewDelegate。代码在https://github.com/mraghuram/NELGPieChart/blob/master/NELGPieChart/NGBarChartView.m
为了绘制barChart,我将每个barChart创建为不同的CAShapeLayer。我这样做的原因是两方面的,首先我可以创建一个UIBezierPath并将它附加到一个CAShapeLayer对象,其次,我可以通过使用Layer hitTest方法轻松地跟踪一个barItem是否被触摸。这个组件工作得很好。然而,我对我绘制barCharts的方法感到不舒服。所以这张便条。我需要以下方面的专家意见
我们非常感谢你的帮助。顺便说一句,您可以自由地查看我的代码和注释。我很乐意接受任何改进的建议。
最好的,Murali
发布于 2011-09-11 20:09:39
一般来说,任何形状的绘图都需要很大的加工能力。用GPU合成缓存的位图比再次绘制它们便宜得多。因此,在许多情况下,我们将所有的绘图缓存到一个位图中,而在iOS中,CALayer负责这一点。
无论如何,如果您的位图超过了视频内存限制,Quartz不能一次组合所有层。因此,石英必须在多个相位上画出单帧。这需要重新加载一些纹理到GPU。这会影响性能。我不确定这一点,因为众所周知,iPhone与系统内存是集成的。无论如何,它仍然是真的,它需要更多的工作,即使在那个案子。即使系统内存不足,系统也可以清除现有位图,并要求稍后重新绘制它们。
CAShapeLayer将完成所有的CGContext(我相信您是指这个),而不是您。如果你觉得需要更低级别的optimization.我希望这能帮到你。
https://stackoverflow.com/questions/7287254
复制相似问题