我使用keyWindow添加一个subView,它添加成功但没有显示在屏幕层次结构的前面。
深灰色视图是我添加的视图:
我的代码是:
@interface ViewController ()
{
LMLUpspringView *pop_v;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
pop_v = [[LMLUpspringView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
UIWindow *keywindow = [[[UIApplication sharedApplication] delegate] window];
[keywindow addSubview:pop_v];
//[keywindow bringSubviewToFront:pop_v];
//[self.view addSubview:pop_v];
}
我已尝试使用[keywindow bringSubviewToFront:pop_v]
将其带到前面。但是不行。
如果我使用[self.view addSubview:pop_v]
,它会显示在前面。
答案 0 :(得分:1)
您遇到此问题,原因是您不知道viewDidLoad
方法与viewDidAppear:
方法之间的区别。
<强> viewWillAppear中:强>
在将视图添加到窗口的视图层次结构
之前调用<强> viewDidAppear:强>
将视图添加到视图层次结构
后调用
控制器的视图添加到窗口的视图层次结构位于viewWillAppear:
和viewDidAppear:
之间,viewDidLoad
位于viewWillAppear:
之前,所以你不能这样做。你应该在viewDidAppear:
添加你的观点。
答案 1 :(得分:0)
您可以使用appdelegate的Windows解决此问题:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.window addSubview:pop_v]
答案 2 :(得分:0)
使用此:
@interface ViewController ()
{
LMLUpspringView *pop_v;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
pop_v = [[LMLUpspringView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
UIWindow * keywindow = [[UIApplication sharedApplication] keyWindow];
[keywindow addSubview:pop_v];
//[keywindow bringSubviewToFront:pop_v];
//[self.view addSubview:pop_v];
}