2012-04-17 16 views
2

私はしばらくの間、クロスワードアプリケーションに取り組んできました。実際のゲームはUIScrollviewで実行されます。プレイヤーはスクロール、ズーム、パンすることができるからです。 UIScrollViewのにiPhone:UIScrollviewで400個のUILabelsを処理する最善の方法

iは、タッチイベントを処理し、プレイヤーが触れた場所を計算UITapGestureRecognizerを追加しました。ここまでは順調ですね。

その後、約400のUILabelsをUIScrollviewに追加しました。プレイヤーがキーボードのボタンを押すまで、それぞれは「空」になります。私の問題は、私はこれらのラベルを追加するとき、全体UIScrollViewのは、ユーザーが適切な言葉緑色のタイルが見えるようになるの推測通りなど

をスクロールする上で非常に遅いとラグになるということです。タイルはUIImageViewsとしてロードされます。これにより、パフォーマンスが再び低下します。

私はDTGridView見てきましたが、私はそれとは運を持っていないしました。

私を助けて正しい方向に私を導くことができますか?

+1

UIKitは、このようなシナリオでは動作しません。コアグラフィックスまたはOpenGLベースのエンジンを試してください。 – EmilioPelaez

答えて

1

私はあなたが自分の代わりに、あなたはNSArrayのは、「ラベル」と呼ばれる400個のオブジェクトが含まれている設定することができ、それに

を400 UILabelを追加するのdrawRect UIScrollViewのメソッドを実装するべきだと思います。

ユーザーがボタンを押したときに、 "ラベル" &のテストで現在のオフセットのスクロールビューに表示する "ラベル" &のテストを計算してください。

1つのUIScrollviewに400個のUILabelsを追加すると、メモリの問題が発生することがあります。

+1

私に例を与えたり、何かのチュートリアルを教えてもらえますか? :) –

+0

あなたの問題を見直し、20 x 20パズルを作成したいと思いますか?** drawRect **メソッドを実装し、必要なすべてのタイルを描画し、各タイルのステータスを決定する方が簡単ですが、** drawRect **を使用してUIViewをカスタム描画する方法を知っておく必要があります。 – adali

+0

これが私が使用する方法です。多くのサブビューは常にパフォーマンスに悪影響を及ぼします。drawRectを使用すると、テキストやグラフィックを直接ビューに描画できます。 –

0

スクロールビューでリサイクルラベルを使用する必要があります。パフォーマンスが向上します。 UIScrollViewでサブビューを再利用/リサイクルする方法を知るには、UIScrollViewのApple WWDCビデオをチェックしてください。 WWDC 2010 Sample Code。また、あなたはしばらく/日であっても、過去のために、私はこれでプレーしてきた。このリンクCreating Circular and Infinite UIScrollViews

0

から助けを得ることができUIScrollViewのクラスRefference UIScrollView Class Reference

をご確認ください。さまざまな関連する回答を使用します。しかし、最終的に私は楽器を使用し、何が遅いかを見るためにコメントしました。

私は誰かがときaddSubviews layoutSubviewsが物事を遅く、私はそこの外に私の「ローカル」のコードを取ったと言って覚えています。しかし、何も起きなかった。

は、だから私のaddSubviewルーチン中にブレークポイントを使用しているとき、私はiOSのシステムは、スーパーのレイアウトコールのviewDidLoad中(navigationCtrlr)に実際に気づきました。

サブビューとbamを追加する前に0.1秒の遅延が導入されました。競合状態からのクラッシュを防ぐためにdispatch_asyncを推奨しますが、それは別の問題です。要するに

、それはあなたがそこにいるとは思わない場合でもLayoutSubviewsにあるかもしれません。

関連する問題