KeyWindow добавить subView, не показывает спереди

Я использую keyWindow для добавления подпункта, он добавляет успех, но не отображается в передней части иерархии экрана.

Глубокий серый вид - это мой добавленный вид:

Мой код:

@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], это показывает спереди.

3 ответа

Вы столкнулись с этой проблемой, вызванной тем, что вы не знаете разницу между viewDidLoad метод и viewDidAppear: метод.

viewWillAppear:

Вызывается до того, как представление будет добавлено в иерархию представления Windows.

viewDidAppear:

Вызывается после добавления представления в иерархию представлений.

Вид контроллера добавляет к иерархии вида окна междуviewWillAppear: а также viewDidAppear:, viewDidLoad перед viewWillAppear:, так что вы не можете сделать это. ты должен в viewDidAppear: добавь свое мнение

Вы можете решить эту проблему, используя Windows приложения appdelegate:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.window addSubview:pop_v]

Использовать этот:

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

}
Другие вопросы по тегам