2017-04-25 9 views
0

keyWindowを使用してサブビューを追加しましたが、成功しましたがスクリーンの階層の前に表示されませんでした。KeyWindowサブビューを追加しました。正面に表示されませんでした

enter image description here

私のコードは次のとおりです:私は動作しませんfront.Butにもたらすために使用[keywindow bringSubviewToFront: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] delegate] window]; 

    [keywindow addSubview:pop_v]; 

    //[keywindow bringSubviewToFront:pop_v]; 
    //[self.view addSubview:pop_v]; 

} 

深い灰色のビューは、私を追加しました図です。

[self.view addSubview:pop_v]を使用すると、正面に表示されます。

答えて

0

あなたはappdelegateのWindowsを使用してこの問題を解決することができます。

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

あなたがこの問題に遭遇し、あなたがviewDidLoad方法とviewDidAppear:方法の違いを知っていないことが原因です。

viewWillAppear:ビューは、ビュー階層

に追加された後に呼び出さ

:ビューは、Windowsのビュー階層

viewDidAppearに追加される前に呼び出され

コントローラのビューの追加は、ウィンドウのビューの階層がviewWillAppear:viewDidAppear:の間にあり、viewDidLoadviewWillAppear:の前にあるため、できません。 viewDidAppear:ビューを追加する必要があります。

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

} 
関連する問題