将UIButtons添加到折线图中的数据点,在X轴上绘制日期和时间

时间:2016-10-26 09:48:19

标签: swift uibutton nsdate nsdateformatter linechart

我试图在简单的折线图上绘制一些数据。下面是我存储数据的类。

如何用时间或日期绘制我的yValue s字符串?

另外,我想将title作为UIButton添加到图表中的每个数据点。点击UIButton应显示相应的detailedNote是一个小弹出窗口。 我已经搜索并深入研究了许多iOS图表库,但没有找到添加这种简单功能的方法。

graph-with-buttons-at-data-points.png

此外,过滤和绘制数据的方式是什么?今天","上周","上个月"或者任何时间间隔?

我可以在没有任何第三方框架/库帮助的情况下使用Core Plot和UIBeizerPath等iOS库来完成所有这些工作吗? 我更喜欢使用UIBeizerPath,因为我可以使图形平滑。 https://medium.com/@ramshandilya/draw-smooth-curves-through-a-set-of-points-in-ios-34f6d73c8f9#.28frf03to

有人能指出我正确的资源.. 发布快速代码非常感谢!

class NoteEntry {
var title: String?

var detailedNote: String?

var yValue: Float? = 0

let timeString : String  = {
    let formatter = NSDateFormatter()
    formatter.dateFormat = "h:mm a"
    formatter.AMSymbol = "AM"
    formatter.PMSymbol = "PM"
    return formatter.stringFromDate(NSDate())
}()

let dateString: String = {
    let formatter = NSDateFormatter()
    formatter.dateFormat = "d"
    return formatter.stringFromDate(NSDate())
}()

let dayOfTheWeekString: String = {
    let formatter = NSDateFormatter()
    formatter.dateFormat = "EEE"
    return formatter.stringFromDate(NSDate())
}()

let monthAndYearString: String = {
    let formatter = NSDateFormatter()
    formatter.dateFormat = ""
    return formatter.stringFromDate(NSDate())
}()

}

1 个答案:

答案 0 :(得分:1)

以下是如何使用SwiftCharts执行此操作的答案:

  1. 如何用时间或日期绘制yValues作为字符串? 您必须将字符串转换回日期。否则图表将不知道如何订购它们。我还建议在模型类中存储日期而不是字符串。在需要字符串的地方进行格式化,或者至少在单独的(计算的)变量或扩展中进行格式化。关于如何在SwiftCharts中创建带日期的图表,库中有一些例子,只是用它们定位。

  2. 标题为UIButton 您可以使用任何类型的UIViews作为图表点/叠加/等。对于带有标题的行,您将有一个线图层和一个添加可点击标题的图层,例如, NotificationsExample - 这非常接近你想做的事情。它使用HandlingView而不是UIButton来关闭而不是使用选择器进行抽头处理。使用选择器,您将失去处理点击的图表点的上下文。

  3. 过滤"今天","上周"等等 我建议为此开一个新问题。你不应该把这么多问题捆绑在一起。这也与图表库无关,没有图表库会为您执行此操作。您必须使用NSDateComponents。也许那里有一个时间操作库 - 正如所说这是一个单独的问题。

  4. 核心情节是第三方框架:)您当然可以从头开发图表,但我建议使用图书馆。对于特殊情况,SwiftCharts看起来非常合适,您应该能够使用修改后的NotificationsExample版本来完成图表,以使用日期而不是数字(从其他示例中复制日期),并调整可点击的叠加层。 / p>

  5. 如有更多问题,请随时评论此问题或您在SwiftCharts中打开的问题。

    (免责声明:我是SwiftCharts的作者)。