iOS 在viewDidLoad里面添加一个view,并添加在window上,结果发现显示不出来

对象是有存在的,只不过是被压到了self.view的下方。

为什么直接viewDidLoad里面往window添加会这样。

解决的方法是在视图全部加载完之后,在往window上添加,这样就能显示在最前面了。

这是为什么?

我的可以啊!   UIWindow *window = [UIApplication sharedApplication].keyWindow;
UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
[lable setBackgroundColor:[UIColor redColor]];
[window addSubview:lable]; 把这行代码放在viewdidload最后 试试

加个背景色或者点击这个按钮看看视图层次图片说明

也不说你是怎么添加的

对应view什么addsubview来添加

我想你的这个ViewController是window的 rootViewController 吧?

如果是的话应该是如下解释:

  1. 设置为 window 的跟视图之后,就要把该 viewcontroller 管理的 view 加到 window 上,iOS 早期版本没有提供 rootViewController ,就是这么做的;
  2. 获取 viewcontroller 管理的 view 时,第一次是没有改对象的,因此调用 loadview 创建,然后就会调用 viewdidload 方法;
  3. 你 viewdidload 方法没返回时添加到 window 上一个 view ;紧接着 viewcontroller 管理的 view 加到 window ;

所以就出现了你说的在下面的情况了....