整数值我想表现出的iPhone grapph /条形图我如何做到这一点没有定制的API的图形; S如何生成使用iphone
回答
您可能想要调查Core Plot项目[code.google.com]。核心剧情是WWDC今年的科学编码项目的主题,对于某些情况已经非常适用。从一开始,Core Plot就是为OS X和iPhone的使用而设计的。源代码发行版(目前还没有二进制发行版)附带OS X和iPhone示例应用程序,并且项目wiki上有关于将其用作iPhone应用程序库的信息。这是一个当前绘图功能的例子。
alt text http://core-plot.googlecode.com/files/DarkGraph.png
写你自己的。这并不容易,我现在正在做同样的事情。以下是我的做法:
首先,忽略任何你可能必须尝试使用UIScrollView的愿望,如果你想允许缩放。这完全不值得。
其次,创建一个像GraphElement
协议。我有一个看起来像这样一个层次结构:
- GraphElement
- GraphPathElement
- GraphDataElement
- GraphDataSupplierElement
GraphElement包含的图形元素,包括如何得出的基本必要的方法,最大宽度(用于放大),点是否在该元素内(用于触摸)以及标准的touchBegan
,touchMoved
, d touchEnded
功能。
GraphPathElement
包含CGPath
,线条颜色和宽度,填充颜色和绘图模式。无论何时提示绘制,它只是将路径添加到上下文,设置颜色和线宽,并使用给定绘图模式绘制路径。
GraphDataElement
,作为GraphPathElement
的子类,在x-y坐标,图形类型(条或线),框架和边界中引入一组数据。该框架是创建的输出CGPath的实际大小。边界是输入坐标中数据的大小。实质上,它可以让您将数据缩放到屏幕大小。
它通过首先计算仿射变换以将边界转换为帧来创建图形,然后循环遍历每个点并将其作为数据添加到路径,然后在添加该点之前将该变换应用于点。它如何添加数据取决于类型。
如果是条形图,它将创建一个宽度为0的矩形,原点位于(x,frame.size.height-y)和height = y。然后它将图形“插入”水平-3像素,并将其添加到路径中。
如果这是一个线图,那就更简单了。它只是移动到第一个点,然后对于每个其他点,它会在该点上添加一条线,在该点附近的矩形中添加一个圆,然后移回到该点以继续到下一个点。
GraphDataSupplierElement
是我的数据库实际上包含所有数据的接口。它确定它应该是什么样的图形,将数据格式化为GraphDataElement
所需的类型,并将其传递给该特定图形所用的颜色。
对我来说,x轴是时间,并表示为NSTimeInterval
s。 GraphDataSupplierElement
包含minDate
和maxDate
,因此GraphDateElement
可根据需要绘制x轴标签。
完成这一切后,您需要创建实际图形。你可以通过几种方法去解决。一种选择是将所有元素保存在NSArray
中,并且每调用一次drawRect:
,循环遍历每个元素并绘制它。另一个选项是为每个元素创建一个CALayer
,并使用GraphPathElement
作为CALayer
的委托。或者你可以直接从CALayer
延伸GraphPathElement
。这个由你决定。我还没有尝试CALayer
s,但我仍然坚持在简单的NSArray
阶段。一旦我对所有事物的外观都感到满意,我可能会转向CALayer
。
所以,一切的一切,这个想法是,你创建的图形为一个或多个CGPath
小号事前,只是画,当你需要绘制图形,而不是试图去真正分析数据时,你得到一个drawRect:
呼叫。
可以通过将源数据保留在GraphDataElement
中来完成缩放,并且只需更改框架,以使框架边界的缩放比屏幕更宽,或者无论您的需要是什么,都可以创建更宽的屏幕。我基本上重新实现了我自己的缩放缩放,用于我的Graph UIView
子类,该子类只能水平缩放,通过更改其变换,然后完成,获取当前帧,将变换重置为标识,将帧设置为保存的值,并设置所有GraphElement
的框架,以及新框架,以使它们成比例。然后只需拨打[self setNeedsDisplay]
即可绘制。
无论如何,这有点漫无边际,但它是我如何做到这一点的纲要。如果您有更具体的问题,请随时发表评论。
- 1. 如何生成iPhone指纹?
- 2. 如何使用我的iPhone/iPad应用程序生成QR码?
- 3. 如何使用IOS iphone SDK生成PKCS7格式签名?
- 4. 如何使用JSON框架为iPhone编程生成JSON
- 5. 如何在使用remoteIO生成iPhone音频时防止爆音?
- 6. iPhone Excel生成
- 7. 如何生成柏林噪声在iPhone
- 8. 如何在iPhone中生成QR码?
- 9. 生成来自iphone
- 10. 如何生成一本只读的iPhone应用程序,如书
- 11. 如何使用LLVM生成调用图?
- 12. 使用界面生成器为iPhone应用程序生成视图。
- 13. 如何使在界面生成器视图更大 - iphone
- 14. 如何使用rails生成2个模型生成命令
- 15. 如何使用FPDF生成生成PDF的页面上预览
- 16. 如何使用宁静代码生成器生成代码(.ts)
- 17. 如何使用obj2xml为xsd2ruby生成的ruby类生成属性?
- 18. 如何生成使用虾宝石
- 19. 如何使用php生成json?
- 20. 如何使用Adobe CFC生成器
- 21. 如何使用NHibernate和Firebird生成ID?
- 22. 如何使用Eclipse生成mapping.txt?
- 23. 如何使用java.util.Optional生成JaxB类?
- 24. 如何使用lxml.objectify生成XML
- 25. 如何使用ggplot2生成此图形
- 26. 如何使用ANT生成apk文件?
- 27. 如何使用Intellij生成gradle文件
- 28. 如何使用numpy.random生成int数字
- 29. 如何使用DOM生成<form>?
- 30. 如何使用ANT生成.air文件?
您最终设法解决这个问题吗?你会碰巧写了一个完整的教程吗? – Unheilig 2014-01-12 04:44:12