iOS图表:自定义Y轴值

尽管我对iOS图表还很陌生,但是我在其中进行了大量的工作,并且接触到它的许多不同方面。 从自定义轴值格式器和数据集的简单端到更复杂的概念,例如自定义条形图,组合图以及其他图表和渲染器。

本文特别关注一个简​​单的主题,源于我在iOS图表GitHub页面上看到的有关自定义y轴标签的最新问题。 这个问题并不是最复杂的。 但是,我希望有人被卡住,他们会偶然发现本文,并为他们指明正确的方向。

让我们开始吧。


惊喜! 在本文中,我们不会讨论如何设置iOS项目。 如果您还不知道如何操作,请搜索Medium,我相信有很多很棒的文章可以帮助您入门。


这的主要任务比您想象的要容易得多。 只需创建一个新类,使其符合IAxisValueFormatter ,并实现所需的stringForValue函数即可。 在stringForValue函数内部,您将在其中处理有关如何格式化轴标签的逻辑。 使用自定义轴格式化程序可能会很有创意,因此我敦促您熟悉它们,并看看它们可以为您做什么。

在此示例中,我们将假设我们的数据集仅包含0到4的y值。 我们的格式化程序将转换我们的y值0–4,并将其显示为从“ 强烈反对”到“ 强烈同意”

一致性

让我们从创建我们的类MyCustomAxisValueFormatter并使它符合IAxisValueFormatter

如您所见,我们有一个必须解决的错误。 我们必须实现stringForValue以满足IAxisValueFormatter协议要求。

实现stringForValue

如前所述,这是我们要返回要在轴上显示的特定值的字符串的地方。 让我们从简单地返回值的整数作为字符串开始,以了解该方法的工作原理。

添加自定义逻辑

接下来,我们将创建一个枚举来代表我们的价值观的不同状态。 这将提供一种表示我们的值的方式,并在y轴上为标签提供一个字符串。

现在我们有了带有Int rawValue的枚举,我们可以将我们的值转换为Int ,初始化一个AgreementRating ,然后使用该等级设置轴标签。

注意:为简单起见,我忽略了错误处理,因为我保证值为0–4。 但是,在现实世界中, 请勿强行打开包装并忽略失败的可能性,否则您的应用程序可能会崩溃。

配置图表轴

作为确保图表仅显示这五个标签的最后一步,我们需要在左轴上设置几个属性。

在那里,您拥有了! 带有自定义y轴标签的图表,其呈现的不仅仅是一个简单的整数/双精度值。

(是的,这是带有圆条的条形图的自定义实现。可能很快就会出现!)


现在,我们已经看到了如何创建自定义轴值格式化程序,并使用它来显示与简单数字值完全不同的字符串。 对于x轴和y轴,这些自定义格式器的功能可能非常强大。 感谢danielgindi提供出色的iOS图表库。 去看看GitHub仓库! 链接资源。


iOS图表-https://github.com/danielgindi/Charts