2012-03-28 8 views
1

Ok。私はここでやろうとしているものに似たたくさんのトピックを見たことがありますが、まったく一致するものはありません。多分私のアプローチは基本的な方法ではありません。ここでは取引があります。drawRect:とUIPanGestureRecognizerを使用した滑らかなアニメーション

drawRect:のUIViewサブクラスにグラフを描画しています。次に、UIPanGestureRecognizerを使用して、チャートのオフセット(ビュー階層ではない内部)を右/左に変換します。これは素晴らしいですが、私の問題は認識装置の動作が比較的低い頻度で発生することです。具体的には、結果として生じるパンニングは、例えば、スクロールビューまたはテーブルビューにおいてよりもずっと厄介である。特に、チャートのポイント数が上がったとき。さて、私がやりたいことは実際にパンジェスチャーのアクションから描画をトリガーするのではなく、1秒間に30回、パンが現在の瞬間に発した瞬間からのオフセットを補間するようなタイマーを発動させます。しかし、これはますます複雑になってきています。

誰か提案がありますか?私は本当にUIScrollViewでこれを行うべきですか?私はデータがいずれの方向にもかなり伸びていることを好まない理由は、一度にパス全体を描画(または少なくとも格納)する必要はないが、現在のセクション表示されます。 CAShapeLayerを使用すべきですか?私は別の日をこれらの可能性を持って遊んで過ごす前にいくつかのインプットをお願いします...

どんな入力/経験も大歓迎です。

+0

パンニング中に 'drawRect'が呼び出されるのはなぜですか?あなたは単にその見方を動かしていないのですか? –

+0

いいえ、パンは私の "dataWindow"を変更します。これはdrawRectに反映されます。ビュー自体は移動も拡大もしません。 – samson

+0

ああ、スクロールの増分ごとに再描画していますか?それは物事を遅らせるだろう。私が見たトリックの1つは、データをイメージにレンダリングし、新しいデータが到着したときにのみデータから再描画することです。または、データビューをスクロールビューにプルして、まったく再描画しないでください。あなたがそれに到着したらあなたのソリューションを投稿してください。 –

答えて

1

最後に、私はこれらのことをUIScrollViewに入れてしまいました。私はこれを稼働させるためにかなりの労力を要しました。複雑な部分は、スクロールビューに追加される一連のPANESの作成です。各ペインはデリゲートに描画する必要のあるデータを要求し、それらはすべて一緒にステッチされます。幸いなことに、チャート・ペインを含むこれらのスクロール・ビューを表ビューに入れると、すべてがうまくいった。まだスケーリングに取り組んでいませんが、私は比較的簡単にすべきいくつかの記事を見ました。

私の元の質問に対する答えです。それぞれのフレームをパンやドローしようとしないでください、それは不安定になりますし、いくつかの実際のハッキングを禁止して、それを円滑にする良い方法はありません。ビューをうまく分割できる限り、スクロールビューでこれらの問題がすべて処理されます。私は長い視野を1つ使用することができたと思うが、データセットが大きくなると困ってしまう。

オフスクリーンのグラフがスクロール表示(UITableViewCellsにあります)すると、新しいグラフが描画されるので大きな問題があります。私はそれらを非同期に画像に描画しようと考えています。そのため、新しい行が表示にスクロールすると、すでに画像が取得されています。

+0

うれしいことに、作業しています! –

+0

コードを投稿したり、もう少し説明してください。私はほとんど同じことをやっていますが、パンニングジェスチャ認識機能を現在使用していますが、パンニングジェスチャ認識機能を使用して、位置を変更してパニングが発生したときにパスを変更する 'CAShapeLayer'を使用しています。ベストプラクティスかどうかはわかりませんが、スムーズに動作します。 「CGMutablePathRef」を変更するのが難しいため、新しい最大値が見つかった場合、問題をどのように拡大するかが問題になりました。そして、他にも多くの問題があります。 – Majster

関連する問題