2 qq 29574501 qq_29574501 于 2016.03.23 14:21 提问

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

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

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

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

这是为什么?

5个回答

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

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

lixingqiao01
lixingqiao01   2016.03.24 18:03

也不说你是怎么添加的

oyljerry
oyljerry   Ds   Rxr 2016.03.24 20:44

对应view什么addsubview来添加

x1q2l3
x1q2l3   2016.03.29 23:28

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Keywindow添加子视图不显示
添加子视图在keywindow上不显示出来 调试发现[UIApplication sharedApplication].keyWindow 为nil不存在 究其原因 是因为这个时候appdelegate中的keywindow还没有创建出来 我们可以用[[[UIApplication sharedApplication] delegate] window] 代替[UIApplicati
KeyWindow上添加子视图未显示
通过UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow,在keyWindow上添加子视图没有显示出来,调试断点打印一下发现keywindow=nil,其实是因为这个时候Appdelegate中的keywindow还没有创建出来(此问题在iOS7中经常容易出现,在iOS8中已经被苹果解决了),如下: 这时我们可以用[[
iOS UIWindow最上层添加视图或者其他控件
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(self.view.frame.size.width-50, 20, 30, 30)];     view.backgroundColor = [UIColor whiteColor];     view.layer.masksToBounds = YES;
实现view添加到window的方式
一个view加到UIWindow的方式主要有2种: 方法1、直接拿到当前的window,通过UIWindow *window = [UIApplication shareApplication].windowslastObject],然后在用[ window addSubView:view]即可 方法2、设置UIWindow的控制器,将RootVC的view加到window上,可以这么用:
iOS SDK详解之UIWindow(让视图在最上层)
这个iOS SDK详解的专栏地址 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言: 很多时候,我们希望视图显示在最上层,不管底部的层次结构如何,例如App的引导页,又比很多交易类App的弹出输入密码的提示框。 UIWindow是什么? UIWindow继承自UIView,也就是说它本身就是一个视图的容器。
iOS- 添加UIWindow蒙版
//UIWindow图层上添加控件 //例如添加蒙版 也可添加到self.navigationController.view 图层上或者self.tabBarController.view 图层上 //self.view /*  UIWindow:一般作为UIView的容器  应用场景:     当需要将某些控件显示到最上层时就可以创建一个window,然后将空间添加到win
iOS 11在window上加视图不显示
项目中用到了弹窗类***,发现iOS 8.1正常,iOS 11弹窗不显示,想到估计是window的问题,查了一下,果然有用。 出错的位置: UIWindow * window = [[UIApplication sharedApplication].windows lastObject]; [window addSubview:self]; 修改后: U...
ios加在View上的按钮无响应
上面这幅图片黑色是一个view, 黄色是2个button, 虽然我们现在能看到这2个button, 但是我们点击它是无响应的 原因1: 这2个button 已经不在这个view的frame内, 也就是超出边界,(当然, 如果有交叉, 一点点,我们点那一点点还是可以出发按钮点击事件的) 原因2: butotn加的视图里, 可能有imageVIew或者UILabel, 因为这2个控件默认交互是关闭
【iOS开发】UIWindow创建悬浮按钮
之前项目中有一个需求,在屏幕上面始终悬浮一个快速聊天按钮。 通过点击按钮可以跳转到相应的聊天界面。思路: 1.先创建一个按钮UIButton对象 2.再创建一个UIWindow对象,将UIButton添加到UIWindow上 3.设置UIWindow的windowLevel属性为UIWindowLevelAlert + 1 4.显示window,[_window makeKeyAndVis
iOS 应用获取最上层全屏 Window 的正确方法
有时候,我们需要将View添加到最上层的Window上,比如:弹出框、Loading等,经常有同学直接通过:[[UIApplication sharedApplication].windows lastObject] 来获取,这种方法是非常不严谨的,很容易与项目中引用的第三方UI库产生冲突,最容易造成的现象是:View添加完后,没有显示出来,不知道添加到哪里去了,其实很有可能是添加到了第三方库的