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
ました...ちなみに、私が見つけた最初のものはviewWillLayoutSubviews
viewDidLayoutSubviews
viewDidAppear
self.view.bounds
{{0, 0}, {1024, 748}}
更新 2: ビューが複雑で作成に時間がかかる場合はどうすればよいですか? テストするために、各セルに 0.1 秒のスリープを追加したusleep(100000);
ところtableView:cellForRowAtIndexPath
、「フラッシュ」が発生しました...しかし、セルとテーブルは軽量で高速に作成する必要があると思われますが、他のタイプのビューがある場合はどうなりますか?作るのにもっと時間がかかりますか?UITableView
作成をに移動しviewWillLayoutSubviews
ても、何かを表示するのはまだ遅いですが、少なくとも「フラッシュ」はありません。ただし、後でデバイスを回転させると、実際にはviewWillLayoutSubviews
再度呼び出され、別のテーブルがメイン ビューに追加されます (正しい画面サイズで)。そのためviewWillLayoutSubviews
、古いテーブル ビューがある場合は最初に削除するか、古いテーブル ビューのサイズを変更する必要があります。新しいものを追加しないでください。