让我们在Swift 3中制作一个折线图

好的,所以您希望您的应用具有简单的折线图。 您正在四处搜寻,并为其找到了一个很棒的库(iOS图表),但是它并没有完全按照您的要求进行。 或者,您不想只为一个小图表就链接整个库。 好消息是,它们实际上很容易使自己成为现实。 您只需要了解有关使用CoreGraphics进行绘图的知识。 在这里,我将逐步引导您完成整个折线图,并确切显示每个部分的功能,以便您可以根据需要自定义它。 总共,我们正在寻找250 LOC。 我将假设您具有Swift和Xcode的基本知识。 这是最终产品。

首先,我喜欢对基本的Swift类型使用一些简单的扩展,以使事情更具可读性并简化常见任务。 在图表中,我将利用您可能要放在另一个文件中的两个扩展名。 第一个用于获取字符串的渲染大小,并始终避免以NSString进行类型转换,第二个用于递增CGPoint的x或y。

var chartTransform: CGAffineTransform?var chartTransform: CGAffineTransform? 。 仿射变换是采用一个点并将其通过矩阵乘法转换为另一点的矩阵。 在这种情况下,我们的图表转换将在数据的XY坐标中获取点,并允许我们在折线图视图的XY坐标中进行绘制。 我们将其设为可选,以便在绘制数据之前可以验证是否有图表变换。 要从头开始,您需要六个参数。 a和d分别缩放x和y,b和c有助于旋转(因此我们将它们设置为零),tx和ty转换x和y。 您也可以一次为它们设置2个参数,但在此不再赘述。 为此的代码即将到来。