Ok。私はここでやろうとしているものに似たたくさんのトピックを見たことがありますが、まったく一致するものはありません。多分私のアプローチは基本的な方法ではありません。ここでは取引があります。drawRect:とUIPanGestureRecognizerを使用した滑らかなアニメーション
drawRect:のUIViewサブクラスにグラフを描画しています。次に、UIPanGestureRecognizerを使用して、チャートのオフセット(ビュー階層ではない内部)を右/左に変換します。これは素晴らしいですが、私の問題は認識装置の動作が比較的低い頻度で発生することです。具体的には、結果として生じるパンニングは、例えば、スクロールビューまたはテーブルビューにおいてよりもずっと厄介である。特に、チャートのポイント数が上がったとき。さて、私がやりたいことは実際にパンジェスチャーのアクションから描画をトリガーするのではなく、1秒間に30回、パンが現在の瞬間に発した瞬間からのオフセットを補間するようなタイマーを発動させます。しかし、これはますます複雑になってきています。
誰か提案がありますか?私は本当にUIScrollViewでこれを行うべきですか?私はデータがいずれの方向にもかなり伸びていることを好まない理由は、一度にパス全体を描画(または少なくとも格納)する必要はないが、現在のセクション表示されます。 CAShapeLayerを使用すべきですか?私は別の日をこれらの可能性を持って遊んで過ごす前にいくつかのインプットをお願いします...
どんな入力/経験も大歓迎です。
パンニング中に 'drawRect'が呼び出されるのはなぜですか?あなたは単にその見方を動かしていないのですか? –
いいえ、パンは私の "dataWindow"を変更します。これはdrawRectに反映されます。ビュー自体は移動も拡大もしません。 – samson
ああ、スクロールの増分ごとに再描画していますか?それは物事を遅らせるだろう。私が見たトリックの1つは、データをイメージにレンダリングし、新しいデータが到着したときにのみデータから再描画することです。または、データビューをスクロールビューにプルして、まったく再描画しないでください。あなたがそれに到着したらあなたのソリューションを投稿してください。 –