【Swift/DGCharts】ChartViewDelegateで取得できるジェスチャーイベント

この記事からわかること
- SwiftのDGChartsライブラリの使い方
- ChartViewDelegateで取得できるジェスチャーイベントの種類
- タップやパン、スワイプなどを検知する方法
index
[open]
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.1
- Swift:5.9
- macOS:Sonoma 14.1
Charts(DGCharts)ライブラリとは?
iOSアプリで使用できるChartsは簡単に折れ線グラフや円グラフ、棒グラフなどの図を実装することのできるライブラリです。iOS16から標準でSwift Chartsフレームワークが追加されたことでこのライブラリの正式名称はDGChartsに変更になっているようです。またimport
文もCharts
からDGCharts
に修正されたようです。
ChartViewDelegateプロトコル
DGCharts
ではグラフをタップやパン、スワイプされたことを検知して処理を実装するためのデリゲートメソッドがChartViewDelegate
プロトコルから提供されています。
ChartViewDelegateを準拠させる
それぞれのデリゲートメソッドを使用するためにはChartViewDelegate
プロトコルをViewController
に準拠させて、実装しているグラフビューのdelegate
プロパティに自身を設定するだけです。
値が選択されたことを検知する
値が選択(タップやパン)されたことを検知するには以下のメソッドを使用します。このデリゲートメソッド内では引数entry
からタップされた位置にあるデータを取得することが可能になります。
また設定でhighlightPerTapEnabled
にfalse
を渡している場合はタップできなくなっているのでパン(スライド)操作のみ検知するようになります。
また複数のグラフを表示している際は先にappend(lineDataSet)
した方が上になり下に表示されるグラフと重なってしまっている部分はタップイベントが取得しにくくなるので注意してください。実際には下の階層にあるグラフはタップでは取得できずタップできるところからパンすることで取得できました。
パンが停止したことを検知する
パンが停止したことを検知するには以下のメソッドを使用します。
「何も選択されていない場合」または「選択解除」されたことを検知する
「何も選択されていない場合」または「選択解除」されたことを検知するには以下のメソッドを使用します。
ピンチ/ズームジェスチャでスケールが変更したことを検知する
ピンチ/ズームジェスチャでスケールが変更したことを検知するには以下のメソッドを使用します。
スワイプを検知する
スワイプしたことを検知するには以下のメソッドを使用します。
アニメーションの終了を検知する
アニメーションが終了したことを検知するには以下のメソッドを使用します。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。