introduction of ios-chart in oss-labs#3
TRANSCRIPT
![Page 1: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/1.jpg)
地味ライブラリ紹介 ios-chartオープンソース勉強会
山下大輔
![Page 2: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/2.jpg)
• 自己紹介 https://github.com/daisuke0131
• iOS,Unityエンジニア
• https://github.com/daisuke0131/ViewMonitor を作っています。星ください。PR下さい。
• 最近ゲームも作ってます。
![Page 3: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/3.jpg)
What’s ViewMonitor
star数 558 (2016/01/22)
Natashaさんのキュレーションメディアに乗せてもらえた。 https://swiftnews.curated.co/issues/55
![Page 4: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/4.jpg)
Unityについて
タイトル(未定) 3月中旬頃リリース予定
テスターを募集中!!
![Page 5: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/5.jpg)
• star数 7053個の圧倒感
• グラフ描画ライブラリ
• MPAndroidChartにインスパイアされている。
iOS-Chartについて
https://github.com/danielgindi/ios-charts
![Page 6: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/6.jpg)
![Page 7: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/7.jpg)
LineChartについて
こういうやつ
![Page 8: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/8.jpg)
LineChartについて
LineChartView
BarLineChartViewBase
ChartViewBase
BarChartViewScatterChartView
後ろのこういうやつ作ってる
・データのハンドリング ・アニメーションのハンドリング
![Page 9: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/9.jpg)
iOS-Chartについて
public class LineChartView: BarLineChartViewBase, LineChartDataProvider { internal override func initialize() { super.initialize() renderer = LineChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) } internal override func calcMinMax() { super.calcMinMax() if (_deltaX == 0.0 && _data.yValCount > 0) { _deltaX = 1.0 } } // MARK: - LineChartDataProvider public var lineData: LineChartData? { return _data as? LineChartData } }
![Page 10: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/10.jpg)
iOS-Chartについて
public class LineChartView: BarLineChartViewBase, LineChartDataProvider { internal override func initialize() { super.initialize() renderer = LineChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) } internal override func calcMinMax() { super.calcMinMax() if (_deltaX == 0.0 && _data.yValCount > 0) { _deltaX = 1.0 } } // MARK: - LineChartDataProvider public var lineData: LineChartData? { return _data as? LineChartData } }
グラフ描画用レンダラ
![Page 11: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/11.jpg)
LineChartRendererの中身
LineChartDataProvider:データ型用のインターフェース@objc public protocol LineChartDataProvider: BarLineScatterCandleBubbleChartDataProvider { var lineData: LineChartData? { get } func getAxis(axis: ChartYAxis.AxisDependency) -> ChartYAxis }
internal func drawLinear(context context: CGContext, dataSet: ILineChartDataSet) {
.
.
. CGContextStrokeLineSegments(..)
}
LineChartRenderer
![Page 12: Introduction of ios-chart in oss-labs#3](https://reader034.vdocuments.site/reader034/viewer/2022050614/58ad1fa31a28ab50728b5a3f/html5/thumbnails/12.jpg)
ソースコードまとめ
•継承によって責務が分けられており、追いかけやすかった。軽量なライブラリだとstructでガツっと作られたりとかmoduleで切り分けることが前提だったり。 •privateな変数をアンダーバーで記述してあるっぽい(private _name みたいな)。(object-cで絶滅したと思っていたが、まだやってる人いる?) •swiftの勉強用コードリーディングの材料としてオススメ