2016-07-13 5 views
3

拡張子が.recのファイルに大量のデータ(項目/行)が格納されています。ピンチズームとドラッグをサポートする折れ線グラフの頂点。私はCoreGraphicsで線グラフを描くことができます。しかし、大量の頂点ではうまく機能しません。大量のデータの場合、グラフを描くには3分以上かかります。私はすぐに少なくとも80,000アイテム(頂点)を描画する必要があります。私の現在のソリューションは500アイテムをスムーズに処理できます。私はどのように大量のアイテムを扱うことができないのか分かりません。多くのデータを持つObjective Cの線グラフを描画し、コレクションビューで表示します

UICollectionViewには、項目(データは行と列、グラフではない)のみを表示しています。 UICollectionViewの読み込み時間はメインスレッドをブロックし、アプリは冷蔵庫になります。大量のデータを読み込むためのサポート方法を教えてください。

フルコードとデータファイルはGithubにあります。折れ線グラフの描画とUICollectionViewの両方で助けが必要です。

8000 Data plotted, took 1.5 mins Data on tabular form with collection view

+0

この質問は広すぎ、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)に欠けています。この質問が終わっていない唯一の理由は、奨励金が付いているからです。 – JAL

+0

Githubで自分のコードを見ましたか? https://github.com/kallolfrisky/LineGraphどのように解決策を得るために私の質問を改善することができます... – kallol

答えて

1

私はあなたの同時ユーザーインターフェイスを構築、WWDC 2012のセッション211を見て提案し、そこ概念を適用します。これは、内容が独立して照会されレンダリングされるセルを特徴とします。これにはテーブルビューが含まれますが、コレクションビューにも同じ概念を適用できます。

基本的な考え方は次のとおりです。
1. tableView:cellForRowAtIndexPathでは、セルがインスタンス化されます。
2.同じメソッドでは、セルを取り込むためのデータを取得する操作が作成され、辞書に格納されます。セルへの参照が操作に渡されます。操作には、セルにデータを挿入して辞書から操作を削除する完了ハンドラがあります。
3.メソッドからセルが返される前に、操作が操作キューに追加されます。
4. tableView:didEndDisplayingCell:forRowAtIndexPathで、画面外に移動したセルの操作がキャンセルされ、辞書から削除されます。

+0

NSOperationQueueとこの同時のタスク処理は、別のスレッドでデータ解析を実行し、メインのスレッド料金を維持するのに役立ちますまだグラフを描いておらず、時間がかかる。 – kallol

2

そうしないと、画面の解像度が高くても、そのボリュームを有効にすることはできません。マップをタイル貼りするときと同じように、複数の異なるズームレベルを持つようにデータを正規化します。ズームアウトすると全体的なフローが表示されますが、詳細は表示されません。ズームインすると、「より多くの」データポイントを使用できますが、縮小された範囲では、全体的にグラフの複雑さはすべてのレベルで同じです。

コレクションビューはまったく別のものです。コレクションがスクロールするたびに各グラフを再描画してもうまくいくわけではありません。グラフのグラフまたはスナップショットイメージのいずれかをキャッシュする必要があります。あなたはメモリ使用量に注意する必要がありますし、あなたの新しいグラフをスクロールする前にそれら(またはそのスナップショット)を事前に準備していない間に、いくつかの遅れを持たないことは非常に困難です。ページングをオンにして、同時に複数のグラフを画面に表示しないようにする必要があります。

+0

ありがとうございました。私のコンテキストはスクロール可能です。コードを実行すると表示できます。あなたの考えは良いですが、私はコードレベルで実装することができませんでした。私はグラフではなくコレクションビューのデータのみを表示しています... – kallol

+0

私は自分の投稿を編集して画像をアップロードしました。問題のより良いシーンを得るために... – kallol

+0

グラフのためにXポイントを平均して値を平均し、この新しい小さな値のセットをグラフとして描画します。ズームスケールが変わるとXを変更します。コレクションビューでは、バッチ/ページのロード、および/またはバックグラウンドでのデータのロードが必要です – Wain

関連する問題