【发布时间】:2017-05-16 11:28:20
【问题描述】:
我正在使用iOS-Charts library,我需要继承HorizontalBarChartRenderer 以便我可以更改drawDataSet(...) 的实现。如前所述,这应该是可能的,例如this answer。
所以我创建了我的自定义渲染器,但由于访问控制以及我使用的是 Cocoapods,我不得不重写 drawDataSet:
- 文件私有类缓冲区
- fileprivate var _buffers = 缓冲区
- fileprivate func prepareBuffer(dataSet: IBarChartDataSet, index: Int)
- fileprivate var _barShadowRectBuffer: CGRect = CGRect() 打开覆盖
- 打开覆盖函数drawDataSet(上下文:CGContext,数据集:IBarChartDataSet, 索引:整数)
我还没有改变任何东西,上面的方法只是从HorizontalBarChartRenderer复制过来的,我这样设置渲染器:
self.horizontalBarView.renderer = HorizontalBarStackRenderer(dataProvider: self.horizontalBarView, animator: self.horizontalBarView.chartAnimator, viewPortHandler: self.horizontalBarView.viewPortHandler).
当我尝试运行它时,我在BarCharRenderer's drawValues() 得到fatal error: Index out of range:
let buffer = _buffers[dataSetIndex]
当我尝试将渲染器设置为标准 HorizontalBarChartRenderer 时:
self.horizontalBarView.renderer = HorizontalBarChartRenderer(dataProvider: self.horizontalBarView, animator: self.horizontalBarView.chartAnimator, viewPortHandler: self.horizontalBarView.viewPortHandler)
一切正常。我错过了什么吗?
【问题讨论】:
标签: ios swift ios-charts