UITableView画面全体を覆うオブジェクトを追加しようとしています。
UITableView *tabelView = [[UITableView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:tabelView];
しかし、物理的な iPad 2 を横向きモードに回転させてself.view.boundsも{{0, 0}, {768, 1004}}、viewDidLoadおよびviewWillAppear. viewDidAppearやっとのことだけ{{0, 0}, {1024, 748}}
self.view.bounds正しく設定されている最も早い時刻は{{0, 0}, {1024, 748}}? が 1 つである場合viewDidAppearは、そこに作成する必要がありますUITableView。「起動イメージ」が静的な横向きの空白のテーブルである場合、 が呼び出されると画面が白い画面で点滅しviewDidAppear、テーブルが追加されて表示されるので、白い画面のフラッシュが見られます。
self.view.boundsでは、正しく設定されている最も早い時刻は{{0, 0}, {1024, 748}}いつですか? viewDidAppear空白のテーブルが(灰色の線で)描画され、それが表示され、Launch 画像を覆うようにシームレスに表示されるように、少し前にする必要があるようです。viewDidLoad表が で、またはviewWillAppearを使用して作成された場合、表のself.view.bounds幅は 768 ポイントになり、ポートレート モード用になります。
更新:起動イメージを追加しようとしましたが、何らかの理由で、UITableViewが追加されていてもviewDidAppear、「白い画面のフラッシュ」は発生しませんでした...理由はわかりませんが、以前にCALayerビットマップを使用した場合コンテンツを表示し、ビューまたはを使用しなかった場合、フラッシュが発生しdrawRectました...ちなみに、私が見つけた最初のものはviewWillLayoutSubviewsviewDidLayoutSubviewsviewDidAppearself.view.bounds{{0, 0}, {1024, 748}}
更新 2: ビューが複雑で作成に時間がかかる場合はどうすればよいですか? テストするために、各セルに 0.1 秒のスリープを追加したusleep(100000);ところtableView:cellForRowAtIndexPath、「フラッシュ」が発生しました...しかし、セルとテーブルは軽量で高速に作成する必要があると思われますが、他のタイプのビューがある場合はどうなりますか?作るのにもっと時間がかかりますか?UITableView作成をに移動しviewWillLayoutSubviewsても、何かを表示するのはまだ遅いですが、少なくとも「フラッシュ」はありません。ただし、後でデバイスを回転させると、実際にはviewWillLayoutSubviews再度呼び出され、別のテーブルがメイン ビューに追加されます (正しい画面サイズで)。そのためviewWillLayoutSubviews、古いテーブル ビューがある場合は最初に削除するか、古いテーブル ビューのサイズを変更する必要があります。新しいものを追加しないでください。