編輯簡版: 我正在使用帶有動態數據的ios圖表顯示一個圖形,並且它正在切斷我的圖形,因此圖形的完整垂直部分不是' t正確顯示。某些操作(如從風景轉換爲人像或反之亦然)會導致圖形正確顯示。如何將ios圖表約束爲視圖大小
原始的問題
我在iPhone模擬器6顯示了曲線圖,運行iOS 9.3,使用的是iOS,圖表版本2.2.4,和我遇到了一個問題,內容獲取垂直修剪... 有時。
該圖表是向下鑽取的圖表,通過選擇另一個圖表中的數據點來觸發。對於一些數據點,如果我選擇他們第一,在深入分析圖表將被剪掉,就像這樣:
但是,如果我選擇另一數據點,然後再重新選擇此完全相同的數據點剛修剪,圖表呈現或多或少按預期:
我手動設置圖表的最大Y值,和打印最大Y值共同如果我們確信它確實已經確定了,那麼我可以認爲問題不在於圖表格式,而是可能以圖表限制自己的觀點?換句話說,也許這是一個佈局/故事板問題,我可以在視圖上設置一個屬性,甚至可以在父視圖上設置一個屬性以使其正確顯示。
儘管如此,這裏是我用它來生成的情況下,我做任何事情顯然是錯誤的圖表代碼:
... // Part where I actually get the data omitted bc its boring
let chartDataSet = LineChartDataSet(yVals: dataEntries, label: "")
let chartData = LineChartData(xVals: xVals, dataSet: chartDataSet)
drilldownChart.data = chartData
formatChart(drilldownChart, yMax: [runningTotal, Double(goal.target)].maxElement()!)
chartDataSet.colors = [UIColor.blackColor()]
chartDataSet.circleColors = [UIColor.blackColor()]
chartDataSet.drawCirclesEnabled = false
chartDataSet.drawFilledEnabled = true
chartDataSet.fillColor = UIColor.blackColor()
chartDataSet.fillAlpha = 1.0
chartDataSet.valueColors = dataPointLabelColors
print(drilldownChart.chartYMax) // Still prints 66, y'know, just in case
// Format a chart by eliminating grid lines, decimals, right axis, etc.
func formatChart(chart: BarLineChartViewBase, yMax: Double) {
let formatter = NSNumberFormatter()
formatter.minimumFractionDigits = 0
chart.xAxis.labelPosition = .Bottom
chart.xAxis.gridColor = UIColor.clearColor()
chart.leftAxis.axisMinValue = 0.0
chart.leftAxis.valueFormatter = formatter
chart.leftAxis.granularity = 1 // Sets a minimum granularity, but allows for higher granularities
chart.leftAxis.axisMaxValue = [1.0, yMax * 1.1].maxElement()!
chart.leftAxis.gridColor = UIColor.clearColor()
chart.rightAxis.enabled = false
chart.legend.enabled = false
chart.data!.setValueFormatter(formatter)
if (chart.data!.xValCount > 20) { chart.data!.setDrawValues(false) }
chart.descriptionText = ""
chart.animate(xAxisDuration: 1.0, yAxisDuration: 1.0, easingOption: .Linear)
chart.pinchZoomEnabled = false
chart.doubleTapToZoomEnabled = false
let limit = ChartLimitLine(limit: Double(goal!.target), label: "")
limit.lineColor = UIColor.blackColor()
limit.lineDashLengths = [4.0, 2.0]
chart.leftAxis.addLimitLine(limit)
print(chart.leftAxis.axisMaxValue) // prints 66
print(chart.chartYMax) // Prints 66
}
編輯省略故事板的設置,因爲他們是巨大的,它原來不相關
FWIW,在橫向打開繪圖並旋轉到縱向或反之亦然具有相同的正確下鑽尺寸的效果。 –