2

かなりの量のコンテンツを画面にロードしてレンダリングする必要があるアプリがあります(主にデータベースからロードします)。

ここにすべてのコードを投稿するわけではありませんが、実際には、UIScrollViewオブジェクトに追加されるUIViewオブジェクトのセットを構築するだけです。それほど複雑なことはなく、かなり多くのものをロードしただけです。これには現在、1秒ほどかかります(メインスレッドで実行されている)すべてをレンダリングします。

読み込み中にアクティビティインジケーターを表示したいのですが、これを行うには、バックグラウンドスレッドで長時間かかるメソッドを実行し、完了時に「レポートバック」するのが最善の方法だと思います。

問題はこれです。実際の描画はすべてメインスレッドによって行われることを知っているので、新しいスレッドを作成して、画面に描画されるUIViewオブジェクトのセットを構築することは可能ですか?

4

2 に答える 2

3

ユースケースを正確に扱った素晴らしいWWDC2012セッションビデオがあります。

WWDC2012iOSでの同時ユーザーインターフェイスの構築

基本的に、トリックは別のキューにビューを準備して描画し、それをメインキューに送信することです。

于 2012-10-24T22:40:58.610 に答える
0

あなたは正しいです。すべてのUI作業は、メインスレッドで実行する必要があります。あなたの場合UIView、scrollviewに表示されるオブジェクトを追加し、scrollviewがそのポイントに移動し始めたときにのみ残りのオブジェクトを追加することをお勧めします。ビューが表示されそうになった後もビューを追加し続け、スクロールビューから不要なビューを削除することができます。これは通常、より良いメモリ管理に役立ちます。

于 2012-10-24T22:27:41.653 に答える