快速刷新lineChartView View

时间:2017-02-06 07:27:17

标签: swift

有人可以给我一个建议吗? 我有分裂视图和lineChartView的swift 3.0应用程序。 当我加载detailView时,我的lineChart是正确的。见图1。 original correct View

当我将详细信息的屏幕移动到全屏时,我的lineChartView将被移动而不会刷新。但我这样做。我的代码如下。

Not correct View

当我点击图表时,我的lineChartView会刷新并再次正确。

我抓住屏幕移动并尝试重新加载lineChartView但没有结果。

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    if loadedGraph  {
        showGraph(reload: false) //here false means reload from internet data source.
    }
    if UIInterfaceOrientationIsLandscape(UIApplication.shared.statusBarOrientation) {
        print("Landscape")
    } else {
        print("NOT Landscape")
    }
}
func showGraph(reload : Bool) {
    lineChartView.layer.frame.size.width = graphView.layer.frame.width
    var max = maxElement(graph: DataArrayNew)
    if !(max > 0) {
        max = 1
    }
    graphView.layer.borderWidth = 2
    graphView.layer.borderColor = UIColor(red:85/255.0, green:85/255.0, blue:85/255.0, alpha: 1.0).cgColor
    if reload {
        _ = NarodMon.sharedInstance.getHistoricalData(interval: horizontalMarker, device:  sensorID)
    }
    DataArrayNew = (NarodMon.sharedInstance.getDataArray() as NSArray) as! [Double]
    TimeArrayNew = (NarodMon.sharedInstance.getTimeArray() as NSArray) as! [String]
    DataArray = (NarodMon.sharedInstance.getDataArrayOrig() as NSArray) as! [Double]
    lineChartView.maximumValue = CGFloat(max)
    lineChartView.reloadData()
}

setNeedsDisplay()或reloadInputViews()等任何操作都无济于事。

但如果我点击图表,那么图表就会得到正常的视图。

如何解决这个问题,我将非常感激。

Rg,德米特里

1 个答案:

答案 0 :(得分:0)

您可以在

中加载图表
    func layoutSubviews() {
    super.layoutSubviews()
}

希望得到这个帮助。