KeyWindow 添加 subView,没有显示在前面

KeyWindow add subView, did not shows in the front

提问人:s-n-2 提问时间:4/25/2017 更新时间:4/25/2017 访问量:1391

问:

我使用 keyWindow 添加一个 subView,它增加了成功,但没有显示在屏幕层次结构的前面。

深灰色视图是我添加的视图:

enter image description here

我的代码是:

@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]

iOS Objective-C UIView UIVoop KeyWindow

评论


答:

0赞 KKRocks 4/25/2017 #1

您可以使用 appdelegate 的 Windows 来解决这个问题:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.window addSubview:pop_v]
2赞 aircraft 4/25/2017 #2

您遇到此问题,是由于您不知道方法和方法之间的区别造成的。viewDidLoad viewDidAppear:

viewWill出现:

在将视图添加到窗口的视图层次结构之前调用

viewDid出现:

在将视图添加到视图层次结构后调用

控制器的视图添加到窗口的视图层次结构中介于 和 之间,位于 的前面,因此您不能这样做。您应该添加您的视图。viewWillAppear:viewDidAppear:viewDidLoadviewWillAppear:viewDidAppear:

0赞 Sargis 4/25/2017 #3

使用这个:

@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];

}