1

Ok。私はここでやろうとしていることに似たトピックをたくさん見ましたが、完全に一致するものはありません。たぶん私のアプローチはベースから大きく外れています。これが取引です。

drawRect:のUIViewサブクラスにグラフを描画しています。次に、UIPanGestureRecognizerを使用して、グラフのオフセット(ビュー階層ではなく内部)を右/左に変換します。これはうまく機能しますが、私の問題は、レコグナイザーのアクションが比較的低い頻度で実行されることです。具体的には、結果として得られるパンは、たとえば、スクロールビューやテーブルビューよりもはるかに途切れ途切れになります。特に私のチャートのポイント数が増えると。さて、私がやりたいのは、実際にパンジェスチャのアクションから描画をトリガーすることではなく、パンが発射された瞬間から現在の瞬間までのオフセットを補間して、1秒間に30回程度のタイマーを発射することです。ただし、これはますます複雑になっています。

誰か提案がありますか?私は本当にUIScrollViewでこれを行うべきですか?私が望まない理由は、データがどちらの方向にもかなり拡張される可能性があるためです。パス全体を一度に描画(または少なくとも保存)する必要はなく、現在のセクションを実行するだけです。表示されます。CAShapeLayerを使用する必要がありますか?これらの可能性を試してみる前に、いくつかの入力が必要です...

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

4

1 に答える 1

1

そのため、最終的には、これらのものを UIScrollView に入れることになりました。これを起動して実行するには、かなりの作業を行う必要がありました。複雑な部分は、スクロールビューに追加される一連の PANES の作成です。各ペインは、描画する必要があるデータをデリゲートに要求し、それらをすべてつなぎ合わせます。幸いなことに、グラフ ペインを含むこれらのスクロール ビューをテーブル ビューに配置すると、すべてがうまく機能しました。まだスケーリングに取り組んでいませんが、ここでいくつかの投稿を見たので、比較的簡単になるはずです。

それが私の元の質問に対する答えです。各フレームでパンして描画しようとしないでください。途切れ途切れになり、実際のハックをむき出しにして、それを滑らかにする良い方法を見つけることができません。スクロール ビューは、ビューを適切に分割できる限り、これらすべての問題を処理します。長いビューを 1 つ使用することもできたと思いますが、データ セットが大きくなると困ってしまいます。

ただし、関連する問題があります。画面外のグラフがスクロールして表示されると (UITableViewCells に表示されます)、新しいグラフが描画されるときに大きな問題が発生します。新しい行がスクロールして表示されたときに、すでに画像を取得しているように、それらを非同期的に画像に描画しようと思います。

于 2012-03-30T20:00:47.373 に答える