在iOS图表上显示条形图的最后项目

在iOS图表上显示条形图的最后项目,ios,swift,ios-charts,Ios,Swift,Ios Charts,我有一张有100个项目的条形图。我一次只显示10个,并且启用了滚动。 一切都很好,但我希望显示图表的结尾,而不是开头(新数据)。 唯一的方法是在ViewDidDisplay中使用moveViewToX函数 问题是,图形首先在开始时显示并设置动画,然后转到结尾,这不是很漂亮。 如何在正确的位置直接显示图形 (当我将moveViewToX函数移到ViewDid以外的其他位置时,它似乎不起作用) 谢谢:)我在github上看到了你的问题,所以请不要重复 我猜是因为您将moveViewToX放入view

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

问题是,图形首先在开始时显示并设置动画,然后转到结尾,这不是很漂亮。 如何在正确的位置直接显示图形

(当我将moveViewToX函数移到ViewDid以外的其他位置时,它似乎不起作用)


谢谢:)

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

我猜是因为您将
moveViewToX
放入
viewdide
中,它与图表呈现处于异步模式,因此您无法控制它

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

  • 对图表视图进行子类化,在图表视图代码的某个地方调用moveViewToX(),如
    drawRect()
    的最后一行,以查看它是否有效

  • 如果您熟悉ChartTransformer,在
    ChartViewPortHandler
    中有一个名为
    refresh
    的方法,只要您知道如何使用矩阵,它就应该能够导航到任何位置。查看此帖子:


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

    func viewDidLoad() {
        // ... 
    
        let when = DispatchTime.now() + 0.1
        DispatchQueue.main.asyncAfter(deadline: when) {
            chartView.moveViewToX(lastXAxisValue)
        }
    }
    

    利奥,谢谢你的变通方案,但在这种情况下,我会在我的图表左边有更大的日期,不幸的是我负担不起。。。