我正在尝试添加一个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}}
多少?如果viewDidAppear
是那个,那么我必须在UITableView
那里创建,如果“启动图像”是一个静态的横向空白表,那么屏幕会在调用时闪烁一个白屏viewDidAppear
,然后添加并看到该表,所以一个看到白色屏幕的闪光。
那么self.view.bounds
正确设置的最早时间是什么时候{{0, 0}, {1024, 748}}
?好像需要稍微往前一点viewDidAppear
,这样才能画出空白表(用灰线),并显示出来,无缝显示以掩盖Launch图像。如果表格是在viewDidLoad
或viewWillAppear
使用中创建的self.view.bounds
,则表格最终为 768 点宽,适用于纵向模式。
更新:我只是尝试添加启动图像,由于某种原因,即使UITableView
添加了viewDidAppear
,“白屏闪烁”也没有发生......我不知道为什么,但以前如果我使用CALayer
和位图显示内容,并且没有使用任何视图或drawRect
,然后出现了flash ...顺便说一句,我发现的最早的是viewWillLayoutSubviews
,然后是viewDidLayoutSubviews
,两者都发生在之前viewDidAppear
,并且都显示self.view.bounds
为{{0, 0}, {1024, 748}}
更新 2:如果视图制作复杂且耗时怎么办?为了测试,我在每个单元格中添加了一个usleep(100000);
睡眠tableView:cellForRowAtIndexPath
0.1 秒,并且确实发生了“闪光”......但是单元格和表格应该重量轻且制作速度快,但是如果有其他类型的视图怎么办?制作更耗时?如果我将UITableView
创作移动到viewWillLayoutSubviews
,那么显示某些东西仍然很慢,但至少没有“闪光”。但是,稍后当我旋转设备时,它实际上viewWillLayoutSubviews
再次调用并将另一个表格添加到主视图(具有正确的屏幕尺寸),因此viewWillLayoutSubviews
需要首先删除任何旧的表格视图(如果有的话),或者只是调整旧的大小和不添加一个新的。