SwiftGraphKit 0.2.0

SwiftGraphKit 0.2.0

Charles Bessonnet 维护。



SwiftGraphKit

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,然后首先从 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)

结果

Build Platform

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将包含在数据区域内。

Build Platform

这个方案展示了数据区域、DataFrame和frame的位置。

高级使用

如何创建图的重写

如何创建图点的重写

如何工作dataSource

框架的工作原理

框架中的所有对象都是CALayer或这个类的一个子类。在每个图形组件上都会找到一个CADisplayLink来同步渲染。渲染是以每秒60帧的频率进行。

作者

Charles BESSONNET,您可以给我写信到 [email protected]

许可协议

SwiftGraphKit遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。