2011-09-09 14 views
0

ルートUIViewにたくさんのUIViewが表示されています。 (私はそれが良い習慣ではないと知っています)。サブビューには、UIImageViews、UILabels、およびQuartzを使用したカスタムUIViewが含まれています。すべてのビューを生成した後、UISCrollViewにルートビューを追加して表示します。問題は、すべての画像が瞬時に表示されますが、drawRectメソッドで描画したラベルや線のテキストが表示されるまでに時間がかかることです。スクロールビューをズームすると、すべてが即座に表示されます。どうしたの?ありがとう。表示にUIViewが時間がかかります

+0

使用しているコードを表示します。 – WrightsCS

答えて

4

あなたのコードを見ることなく難しいとは言えますが、あなたのアプリが何かのように思えます。 iOSは、大きな番号のサブビューを、窒息または吃音することなく処理できます。そして、すべてのUIViewものはシングルスレッドです - 実際、私の知る限り、すべてのレンダリングは同じ実行ループで行われます(CATiledLayer - 私が考えることができる唯一の例外です)。だからレンダリングがうまくいかなくても、私は長い休止を期待して、一度にすべてを表示します。あなたが描いた断片的な結果ではありません。

プログラムで、またはnibからビューを追加していますか?同じペン先にあるものはすべて、またはペン先を別にしているものはありますか?あなたのUIViewControllerの状況はどうですか?

遅く表示されているものをいくつかロギングしてみてください。彼らの-drawRect:は本当に遅く呼ばれているのですか、それとも他のものと一緒に呼ばれていて、何か他のものによって隠されていますか?そこに何も入っていない新しいクリーンなアプリを起動し、各サブビューをそこにドロップして、それらの機能がどのように孤立して実行されているかを確認してください。 GCD、スレッド、またはpreform:AfterDelay:タイプの呼び出しを使用している場所には特に注意してください。

すべてが失敗した場合は、サンプルプロジェクトとして投稿して、実際に行ったことをデバッグすることができます。

+0

+1のアプローチ... – tipycalFlow

+0

...と複数の推奨事項を+1してください。しかし、Eric Wongに:あなたのコードを確認して確認する必要があります。 – Sum

+0

今日、UIButton、UILabel、またはテキストを含む別のコントロールが、プロジェクトで使用されているフォントがプロジェクトに存在しない場合、読み込みに時間がかかることが判明しました。別のプロジェクトからカスタムコントロールをインポートしましたが、Xcodeは現在のプロジェクトに存在しないにもかかわらずそのフォントを使用しようとしました。フォントはAttributesインスペクタにも表示されていました。どのような警告やエラーメッセージもありません。確かに、私がフォントを変更した後、パフォーマンスはうまくいきました。 – Alexander

関連する問題