1

我有一个包含 100 个项目的条形图。我一次只显示 10 个,并且启用了滚动。一切都很好,但我想显示图表的结尾而不是开头(新数据)。唯一的方法是使用 viewDidAppear 中的 moveViewToX 函数。

问题是图表在开始时首先显示和动画,然后到最后,这不是很漂亮。如何在正确的位置直接显示图形?

(当我将 moveViewToX 函数移到 viewDidAppear 之外的其他位置时,它不起作用)。

谢谢 :)

4

2 回答 2

2

通过将 moveViewToX 函数调用延迟 0.1 秒解决了同样的问题

func viewDidLoad() {
    // ... 

    let when = DispatchTime.now() + 0.1
    DispatchQueue.main.asyncAfter(deadline: when) {
        chartView.moveViewToX(lastXAxisValue)
    }
}
于 2017-01-26T10:28:30.707 回答
1

我在github上看到了你的问题,所以请不要复制它。

我猜是因为您正在moveViewToX输入viewDidAppear,它与图表呈现处于异步模式,因此您无法控制它。

为了回答您的问题,我无法为您提供确切的解决方案,但我可以提供一些您可以尝试的方法:

  1. 子类化图表视图,在图表视图代码中的某处调用 moveViewToX(),如 的最后一行drawRect(),看看它是否有效;

  2. 如果你熟悉 ChartTransformer,有一个方法叫做refreshin ChartViewPortHandler,只要你知道如何使用矩阵,它应该可以导航到任何地方。查看这篇文章:https ://github.com/danielgindi/ios-charts/issues/226

于 2015-10-10T01:39:45.493 回答