如何添加覆盖所有其他视图的黑屏(包括导航栏和状态栏)?

Dou*_*ith 6 objective-c uiview ios ios7

我想在我的所有视图上添加一个黑屏,然后在它上面显示一个通知窗口,就像在Tweetbot 3中一样:

在此输入图像描述

但是,我不完全确定这是如何实现的.

添加具有屏幕大小的暗视图作为其框架不起作用,如下所示:(导航栏和状态栏未被覆盖)

UIView *darkOverlay = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
darkOverlay.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
[self.view insertSubview:darkOverlay behindSubview:self.view];
Run Code Online (Sandbox Code Playgroud)

这包括状态栏以外的所有内容(因此它非常接近,但由于我的状态栏内容很轻,所以它仍然很刺耳):

[[[UIApplication sharedApplication] keyWindow] addSubview:darkOverlay];
Run Code Online (Sandbox Code Playgroud)

那么这样的事情怎么样呢?

Che*_*Che 3

你可以尝试这个方法

    UIWindow* window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    window.windowLevel = UIWindowLevelAlert;
    window.opaque = NO;

    [window addSubview:someView];

    // window has to be un-hidden on the main thread
    [window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

其中“视图” - 是您的自定义弹出窗口。