回答編集履歴

2

1つ目の追記の誤りについて補足を書いておきました。

2022/06/19 09:10

投稿

退会済みユーザー
test CHANGED
@@ -114,3 +114,11 @@
114
114
  print(chart.highestVisibleX.rounded())
115
115
  ```
116
116
 
117
+ ---
118
+
119
+ 追記2つ目です。
120
+ 1つ目の追記を書いてから気づきましたが、
121
+ この案だとx座標は再現できても、y座標は再現できませんね・・
122
+ ちょっと今は他の案が思いつきませんでした・・
123
+ ごめんなさい。
124
+

1

表示位置の再現についてを追記しました。

2022/06/19 09:05

投稿

退会済みユーザー
test CHANGED
@@ -78,3 +78,39 @@
78
78
  SwiftUIからUIKitのデリゲートを使う方法などはSwiftUIのチュートリアルを見ると良いかもしれません。
79
79
  https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit
80
80
 
81
+ ---
82
+
83
+ 追記です。
84
+ コメントありがとうございます。
85
+
86
+ すでにズームはできていたのですね。
87
+
88
+ ちょっと座標をどう扱っているのか難しいですね・・
89
+ GitHubのIssueを「scroll」などのキーワードで検索してみるのも良いかもしれません。
90
+
91
+ ヒントになりそうに思ったのは、座標で扱わなくても、データのx(xはインデックスですね)とyの値を指定することで表示する位置を変えることができるみたいでした。
92
+ 次の例ではデータの最後の位置を表示する感じになるみたいです。
93
+
94
+ https://github.com/danielgindi/Charts/issues/450#issuecomment-954580674
95
+
96
+ ```swift
97
+ private func viewChartFromTheEnd(chart: BarChartView) {
98
+ let lastIndex = chart.data!.dataSets.first!.entryCount - 1
99
+ let lastEntry = chart.data?.dataSets.first?.entryForIndex(lastIndex)
100
+ chart.centerViewTo(xValue: lastEntry!.x, yValue: lastEntry!.y, axis: .right)
101
+ }
102
+ ```
103
+
104
+ それから見えている部分のxの最小と最大が次のように得られるみたいです。
105
+ ですので、これらを足して2で割ったものがcenter(xに相当する値)になると思います。
106
+ このインデックスを持つデータ(yに相当する値)を探して、
107
+ 中心のxとyを保存しておくという感じにすれば、
108
+ `chart.centerViewTo`で表示位置が再現できそうに思いましたがどうでしょうか。
109
+
110
+ https://github.com/danielgindi/Charts/issues/4030
111
+
112
+ ```swift
113
+ print(chart.lowestVisibleX.rounded())
114
+ print(chart.highestVisibleX.rounded())
115
+ ```
116
+