2011-11-15 10 views
2

UIViewControllerの内容を徐々に読み込んで、アプリを「スニッピア」にするテクニックを探しています。 viewControllerをスタックにプッシュする際に、この問題が発生したことに気付きました。UIViewControllerのビューには、透明性を持つ複雑なサブビューがいくつかあります。私はviewDidAppearの後にそれらを作成し、それらをフェードインすると、トランジションがはるかにスムーズに見えるのだろうかと思います。iOSアプリのパフォーマンスを向上させるためにプログレッシブサブビューをロードする

AppleのTrailersアプリでも同様の効果が見られました。そのアプリでムービーをタップすると詳細ビューがプッシュされ、内容は事実の後にロードされます。その遅延の一部は、それらを表示する前に詳細をダウンロードしているためですが、ダウンロードされているかどうかにかかわらず、常に大きな画像が消えているようです。

これで多くの人が成功したか、または一般的なUIViewControllerの負荷が向上していますか?

答えて

1

パフォーマンスを向上させるために変更を加える前に、Instrumentsを使用してアプリをプロファイリングし、問題の実際の位置を特定します。それは複雑なサブビューを描くのですか?データの読み込み中ですか?知る唯一の方法は測定することです。

あなたが提案した通りにはできない理由はありません。ビューコントローラーにメインビューを作成/ロードしてから、その後に複雑なサブビューを追加させることができます。あなたのビューコントローラは自由にサブビューを追加したり削除したりすることができます。アプリで気分が楽になりますか? AppleがiOSに組み込まれているデフォルトの画像戦略と似ているかもしれません.OSが画像を読み込んでデバイスを反応させるようにし、準備が整い次第、実際のインターフェースに置き換えます。一方、ビューが有用になる前に複雑なサブビューが作成されるのをユーザーが待たなければならない場合、ビューの残りの部分を見ることはあまり役に立たないかもしれません。

別の可能性(測定後)は、ユーザが必要とするの前にビューを作成することです。これは、iOSアプリケーションがメモリと消費電力を節約するために一般的に使用する怠惰な初期化に反しますが、ビューが必要になることがわかっていて、必要になる前にユーザーの活動が滞っていることを期待できる場合は、アプリの見かけのスピードを上げる良い方法。 View Controllerを作成してビューをロードするには、viewプロパティにアクセスするだけです。

+0

私は現在、3番目の可能性で提案したものに似た戦略を実装しています。最初にviewcontrollerがロードされると、それを変数に格納して、表示する必要があるたびに再利用できるようにします。それはシングルトンのようなものです(メモリ警告があればリリースします)。これにより、最初のロードは遅くなりますが、その後のロードは即座に実行されます。待ち時間を緩和するための最初の負荷のスピナーを示します。 –

+0

うん、ああ、 's-word'。 ;-)シングルトンは、共有インスタンスとしてのクラスだけではなく、一度しかインスタンス化されないクラスでもないことに注意してください。それは、それ自身が複数回インスタンス化されるのを防ぐクラスです。 View Controllerの1つのインスタンスを再利用しているだけです。これは問題ありません。それは良い解決策のように思えます。 – Caleb

+1

本当はシングルトンではありません。 –

関連する問題