gpt4 book ai didi

iOS-Charts 使用相同的 YAxis 绘制 2 个图 TableView

转载 作者:行者123 更新时间:2023-11-28 06:27:08 24 4
gpt4 key购买 nike

我正在 iOS 上实现一个折线图,能够使用 iOS Charts 比较数据和 swift

最简单的场景

比较1月4日至1月5日、1月5日至1月6日、1月6日至1月7日等的数据...

所以,我需要用不同的 X 轴 绘制 2 条线(第二条线比第一条线偏移 1 天)和相同的 Y 轴

我做了

创建 2 个折线图 View (LineChartView),其中 1 个带有顶部 XAxis 和图例;和 1 个底部 X 轴和图例

问题

  1. 由于 X 轴标签和图例的空间,2 行具有不同的 Y 轴位置(例如:第 1 行的 0 值大约是第 2 行的 96 值)。我认为一些边距可以解决这个问题,但我只能找到 1 个选项 minOffset,它为所有顶部、底部、左侧和右侧设置边距。我可以使用什么东西来仅保证顶部和底部的边距?

  2. 所有交互(拖动、缩放、触摸等)只影响其中之一,不会影响两者。我怎样才能使交互应用于它们?

更新我通过添加 minTopBottomOffset 并修改 ChartViewBase 来使用它来解决第一个问题

关于我期待的更多信息:

  • 我有这样的数据:[{time: Jan 01, value: 10}, {time: Jan 02, value: 13}, {time: Jan 03, value: 5}]
  • time 为 X,value 为 Y
  • 我想绘制第一行 XAxis 在底部,第二行 XAxis 显示在顶部,第二行 XAxis 向右移动 1 天。 2行有相同的数据

在这里查看我的预期图表:https://drive.google.com/file/d/0B5DT3STrB2t3UW0wTXpKU1RHSTA/view

谢谢!

最佳答案

好的,我觉得你的图表和我的一样奇怪。 :p

1,我可以用什么东西来保证顶部和底部的边距?

您不需要将 minTopBottomOffset 添加到 BarLineChartViewBase。您应该只使用 setViewPortOffsets 方法。

chartView.setViewPortOffsets(left: left, top: top, right: right, bottom: bottom)

2,所有交互(拖动、缩放、触摸等)只影响其中之一,不会同时影响两者。我怎样才能使交互应用于它们?

我们可以用一种有点肮脏的方式来做——添加一个 block View 来接收所有手势,并将它们传递给每个图表。

首先在BarLineChartViewBase中添加如下方法(代码未完成,目前只对TapGestureRecognizer和PanGestureRecognizer有效)。

//Modify
@objc open func receiveGestureRecognized(_ recognizer: NSUIGestureRecognizer)
{
if recognizer is NSUITapGestureRecognizer
{
self.tapGestureRecognized(recognizer as! NSUITapGestureRecognizer)
}
else if recognizer is NSUIPanGestureRecognizer
{
self.panGestureRecognized(recognizer as! NSUIPanGestureRecognizer)
}
}

其次,你应该在你的两个图表前面添加一个 block View 并将它们全部覆盖。

然后添加一些这样的代码(PanGestureRecognizer 的示例):

 UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[self.blockView addGestureRecognizer:panGestureRecognizer];

处理手势:

- (void)handleGesture:(UIPanGestureRecognizer *)gestureRecognizer
{
[self.chartView1 receiveGestureRecognized:gestureRecognizer];
[self.chartView2 receiveGestureRecognized:gestureRecognizer];
}

所以最后你可以同时拖动它们。

关于iOS-Charts 使用相同的 YAxis 绘制 2 个图 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41532857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com