【发布时间】:2012-08-04 18:05:54
【问题描述】:
阅读文档后,我不清楚覆盖 UIView 的 drawRect 或使用图层是否合适。
我将渲染两种图形。折线图和单条条形图。两者都会有沿轴的刻度和与刻度对齐的文本。下面我只显示每个轴的四个刻度,但可能还有更多。
绘制刻度的更好方法是什么?我应该为每个刻度使用单独的图层,还是使用
drawRect在单独的视图上一次渲染它们?除了使用单独的
UILabel之外,还有其他方法可以呈现文本吗?对于条形图,我使用
CAGradientLayer作为条形图。对于折线图,甚至可以使用图层来渲染它吗?
示例图
【问题讨论】:
-
有一个 WWDC 演讲讨论了 Stocks.app 中的图表。它被称为 iOS 开发者实用绘图,来自 WWDC 2011。
-
折线图也可以看CAShapeLayer。
-
@DavidRönnqvist CAShapeLayer 看起来正是我所需要的。根据我的阅读,CALayer 是高度优化的,并且具有各种用于制作动画的好东西,除非您不能使用 CALayer 来制作动画,否则手动渲染是没有意义的。
-
本尼迪克特建议的链接:developer.apple.com/videos/wwdc/2011。不包括 CALayer,只包括 Quartz/Core Graphics。
-
如果您想要一个示例,我们在 CALayers 的层次结构中构建了 Core Plot:code.google.com/p/core-plot,以便仅重绘需要更改的元素。仍然可以做很多事情来提高我们的渲染性能,但这就是我们构建事物的方式。您希望在更新绘图时尽量减少 Quartz 绘图的数量,因为它相当昂贵并且合成 CALayers 非常便宜。
标签: iphone ios ipad calayer drawrect