狠狠撸

狠狠撸Share a Scribd company logo
地味ライブラリ紹介
ios-chart
オープンソース勉強会
山下大輔
? 自己紹介?https://github.com/daisuke0131
? iOS,Unityエンジニア
? https://github.com/daisuke0131/
ViewMonitor を作っています。星ください。PR
下さい。
? 最近ゲームも作ってます。
What s ViewMonitor
star数 558
(2016/01/22)
Natashaさんのキュ
レーションメディ
アに乗せてもらえ
た。
https://
swiftnews.curated.co/
issues/55
Unityについて
タイトル(未定)
3月中旬頃リリース予定
テスターを募集中!!
? star数 7053個の圧倒感
? グラフ描画ライブラリ
? MPAndroidChartにインスパイアされている。
iOS-Chartについて
https://github.com/danielgindi/ios-charts
Introduction of ios-chart in oss-labs#3
LineChartについて
こういうやつ
LineChartについて
LineChartView
BarLineChartViewBase
ChartViewBase
BarChartViewScatterChartView
後ろのこういうやつ作ってる
?データのハンドリング
?アニメーションのハンドリング
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 }
}
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 }
}
グラフ描画用レンダラ
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
ソースコードまとめ
?継承によって責務が分けられており、追いかけやすかっ
た。軽量なライブラリだとstructでガツっと作られた
りとかmoduleで切り分けることが前提だったり。
?privateな変数をアンダーバーで記述してあるっぽい
(private _name みたいな)。(object-cで絶滅したと
思っていたが、まだやってる人いる?)
?swiftの勉強用コードリーディングの材料としてオス
スメ

More Related Content

Introduction of ios-chart in oss-labs#3