我有一个包含 100 个项目的条形图。我一次只显示 10 个,并且启用了滚动。一切都很好,但我想显示图表的结尾而不是开头(新数据)。唯一的方法是使用 viewDidAppear 中的 moveViewToX 函数。
问题是图表在开始时首先显示和动画,然后到最后,这不是很漂亮。如何在正确的位置直接显示图形?
(当我将 moveViewToX 函数移到 viewDidAppear 之外的其他位置时,它不起作用)。
谢谢 :)
我有一个包含 100 个项目的条形图。我一次只显示 10 个,并且启用了滚动。一切都很好,但我想显示图表的结尾而不是开头(新数据)。唯一的方法是使用 viewDidAppear 中的 moveViewToX 函数。
问题是图表在开始时首先显示和动画,然后到最后,这不是很漂亮。如何在正确的位置直接显示图形?
(当我将 moveViewToX 函数移到 viewDidAppear 之外的其他位置时,它不起作用)。
谢谢 :)
通过将 moveViewToX 函数调用延迟 0.1 秒解决了同样的问题
func viewDidLoad() {
// ...
let when = DispatchTime.now() + 0.1
DispatchQueue.main.asyncAfter(deadline: when) {
chartView.moveViewToX(lastXAxisValue)
}
}
我在github上看到了你的问题,所以请不要复制它。
我猜是因为您正在moveViewToX
输入viewDidAppear
,它与图表呈现处于异步模式,因此您无法控制它。
为了回答您的问题,我无法为您提供确切的解决方案,但我可以提供一些您可以尝试的方法:
子类化图表视图,在图表视图代码中的某处调用 moveViewToX(),如 的最后一行drawRect()
,看看它是否有效;
如果你熟悉 ChartTransformer,有一个方法叫做refresh
in ChartViewPortHandler
,只要你知道如何使用矩阵,它应该可以导航到任何地方。查看这篇文章:https ://github.com/danielgindi/ios-charts/issues/226