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