我正在尝试添加一个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:cellForRowAtIndexPath0.1 秒,并且确实发生了“闪光”......但是单元格和表格应该重量轻且制作速度快,但是如果有其他类型的视图怎么办?制作更耗时?如果我将UITableView创作移动到viewWillLayoutSubviews,那么显示某些东西仍然很慢,但至少没有“闪光”。但是,稍后当我旋转设备时,它实际上viewWillLayoutSubviews再次调用并将另一个表格添加到主视图(具有正确的屏幕尺寸),因此viewWillLayoutSubviews需要首先删除任何旧的表格视图(如果有的话),或者只是调整旧的大小和不添加一个新的。