SwiftGraphKit
示例
要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install
。
安装
SwiftGraphKit 可通过 CocoaPods 获取。要安装它,只需将以下行添加到 Podfile
pod 'SwiftGraphKit'
用法
GraphView
GraphView 是一个经典 UIView,您可以在您的应用程序中将它像其他 UIView 一样使用。绘制将取决于配置,您可以添加图表、网格、坐标轴等。
// Sample with autolayout
let graphView = GraphView()
graphView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(graphView)
NSLayoutConstraint.activate([
graphView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
graphView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
graphView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.9),
graphView.heightAnchor.constraint(equalTo: graphView.widthAnchor)
])
图表
现在,您将了解如何向GraphView中添加图表。图表是GraphPoint的集合。图表绘制曲线和点。在此框架中,图表仅绘制点。要绘制曲线,您可以使用Graph的子类,如BezierGraph或BreakLineGraph。
let graph = BezierGraph()
graph.color = .darkGray
graph.thickness = 3.0
graphView.add(graph: graph)
在GraphPoint上也是相同的逻辑,您可以使用此类的一个子类以获得不同的渲染。
var points = [GraphPoint]()
for x in minX..<maxX {
let y = Float.random(in: 45..<120)
let roundedPoint = RoundedPoint(x: CGFloat(x), y: CGFloat(y))
points.append(roundedPoint)
}
graph.addData(data: points)
结果
DataFrame
概念
DataFrame是框架的核心概念。GraphView需要定位为所有UIView。但在框架内部,您将不使用frame或像素进行绘制,而是使用x和y上的自定义单位。这些单位由DataFrame配置。
let minX: CGFloat = 0
let maxX: CGFloat = 6
let dataFrame = CGRect(x: minX, y: 30, width: maxX - minX, height: 220)
您可以想象x对应一周中的某一天(0到6)。您还可以想象y上的心率(30到220)。
框架将您的单位转换为像素。因此,您可以调整GraphView的大小,图表将动画适应其frame。
如果您不知道minY或maxY,因为您在GraphView上使用了dataSource,您可以激活自动调整大小。
数据区域
如您在一些示例中所见,您可以通过滚动和缩放在图表上移动。图表的限制基于数据区域。因此,DataFrame将包含在数据区域内。
这个方案展示了数据区域、DataFrame和frame的位置。
高级使用
如何创建图的重写
如何创建图点的重写
如何工作dataSource
框架的工作原理
框架中的所有对象都是CALayer或这个类的一个子类。在每个图形组件上都会找到一个CADisplayLink来同步渲染。渲染是以每秒60帧的频率进行。
作者
Charles BESSONNET,您可以给我写信到 [email protected]。
许可协议
SwiftGraphKit遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。