2017-10-09 80 views

回答

0

您需要執行以下操作。首先,定製可渲染系列,例如如果你正在使用LineRenderableSeries,你必須創建SCIFastLineRenderableSeries派生新類並覆蓋toSeriesInfo:方法,就像如下

class CustomLineSeries : SCIFastLineRenderableSeries { 
     override func toSeriesInfo(withHitTest info: SCIHitTestInfo) -> SCISeriesInfo! { 
       return CustomSeriesInfo(series: self, hitTest: info) 
      } 
} 

在接下來的步驟中,我們創建我們使用我們的自定義渲染一個CustomSeriesInfo類系列類我們剛剛創建:

class CustomSeriesInfo : SCIXySeriesInfo { 
    override func createDataSeriesView() -> SCITooltipDataView! { 
     let view : CustomSeriesDataView = CustomSeriesDataView.createInstance() as! CustomSeriesDataView 

     view.setData(self) 
     return view; 
    } 
} 

最後,我們創建一個自定義一系列的數據視圖 - 在這裏我們展示一下,我們希望有一個實際的觀點:

class CustomSeriesDataView : SCIXySeriesDataView { 

    static override func createInstance() -> SCITooltipDataView! { 
     let view : CustomSeriesDataView = (Bundle.main.loadNibNamed("CustomSeriesDataView", owner: nil, options: nil)![0] as? CustomSeriesDataView)! 
     view.translatesAutoresizingMaskIntoConstraints = false 
     return view 
    } 

    override func setData(_ data: SCISeriesInfo!) { 
     let series : SCIRenderableSeriesProtocol = data.renderableSeries() 

     var xFormattedValue : String? = data.fortmatterdValue(fromSeriesInfo: data.xValue(), for: series.dataSeries.xType()) 
     let xAxis = series.xAxis 

     if (xFormattedValue == nil) { 
      xFormattedValue = xAxis?.formatCursorText(data.xValue()) 
     } 

     self.dataLabel.text = "" 
     self.nameLabel.text = String(format: "X: %@", xFormattedValue!) 

     self.invalidateIntrinsicContentSize() 
    } 
} 

注意:您必須創建一個實際的View並使用CustomSeriesDataView作爲其主類;並且還要約束網點。