iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在iOS单视图应用中,何时是self.view.bounds设置正确的最早时间?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试添加一个覆盖整个屏幕的UITableView对象

UITableView *tabelView = [[UITableView alloc] initWithFrame:self.view.bounds];
  [self.view addSubview:tabelView];

我意识到即使物理iPad 2旋转到横向模式,self.view.bounds在viewDidLoad和viewWillAppear中也是{{0,0},{768,1004}}.仅在viewDidAppear中,它最终是{{0,{1024,748}}@H_262_10@

self.view.bounds正确设置为{{0,748}}的最早时间是多少?如果viewDidAppear是那个,那么我必须在那里创建UITableView,如果“启动图像”是一个静态的Landscape空白表,那么当调用viewDidAppear时屏幕将闪烁白色屏幕,然后添加并查看该表,看到一缕白色的屏幕.@H_262_10@

那么self.view.bounds最早被设置为{{0,748}}的时间是多少?它似乎需要稍微在viewDidAppear之前,以便绘制空白表(使用灰色线条),并显示它并无缝地显示以掩盖启动图像.如果使用self.view.bounds在viewDidLoad或viewWillAppear中创建表,则表最终为768点宽,适用于纵向模式.@H_262_10@

更新:我只是尝试添加Launch图像,出于某种原因,即使在viewDidAppear中添加了UITableView,“白屏闪烁”也没有发生……我不知道为什么,但之前如果我使用CALayer和位图显示内容,并没有使用任何视图或drawRect,然后发生了闪光…顺便说一句,我发现的最早的是viewWillLayoutSubviews,然后是viewDidLayoutSubviews,这两个都发生在viewDidAppear之前,并且两者都显示self.view.bounds为{{0,748}}@H_262_10@

更新2:如果视图复杂且耗时,该怎么办?@R_489_10639@,我添加一个usleep(100000);在tableView:cellForRowATindexPath中为每个单元格休眠0.1秒,并且确实发生了“闪存”…但是单元格和表格应该是轻量级且快速制作,但是如果有更多时间的其他类型的视图怎么办?消费赚?如果我将uITableView创建移动到viewWillLayoutSubviews,那么显示内容仍然很慢,但至少没有“flash”.但是,稍后当我旋转设备时,它实际上再次调用viewWillLayoutSubviews并将另一个添加到主视图(具有正确的屏幕大小),因此viewWillLayoutSubviews将需要首先删除任何旧表视图(如果有),或者仅调整旧视图大小一个而不是添加一个新的.@H_262_10@

解决方法

避免闪存的最简单方法是在viewDidLoad中创建表视图并正确设置表视图的@L_616_27@调整掩码,以便系统@L_616_27@使表视图填充其超级视图:

- (void)viewDidLoad {
    [super viewDidLoad];
    UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
    tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:tableView];
}

否则,您可以在视图控制器的viewWillLayoutSubviews方法中看到最终视图边界的最早时间.您可以在viewDidLoad中添加一次表视图,然后在viewWillLayoutSubviews或之后调用方法中调整其框架.有关详细信息,请参阅我对UIViewController returns invalid frame?的回答.@H_262_10@

大佬总结

以上是大佬教程为你收集整理的在iOS单视图应用中,何时是self.view.bounds设置正确的最早时间?全部内容,希望文章能够帮你解决在iOS单视图应用中,何时是self.view.bounds设置正确的最早时间?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。