如何在ios7中将UIView对象添加到self.view.window?

crz*_*777 17 objective-c ios ios7

我想添加一个覆盖整个屏幕的暗视图层.

为了做到这一点,我将UIView对象添加到window属性,UIViewController如下所示.我记得我能够window在ios6中添加这样的视图.但是,它在ios7中不起作用.

我怎么能让它工作?

提前致谢!!

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];

    overlayView.backgroundColor = [UIColor blackColor];
    overlayView.alpha = 0.8;

    [self.view.window addSubview:overlayView];
}
Run Code Online (Sandbox Code Playgroud)

Gad*_*Gad 51

这是做你想做的事的一种方式:

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

  • 它运行没有任何错误,但我的视图没有显示。 (2认同)

Bon*_*nie 9

根据UIView的文档,如果视图尚未添加到窗口,则窗口属性为nil,这是调用viewDidLoad时的情况.

你可以做同样的事情 viewDidAppear:(BOOL)animated;

- (void)viewDidAppear:(BOOL)animated; {
    UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];

    overlayView.backgroundColor = [UIColor blackColor];
    overlayView.alpha = 0.8;
    [self.view.window addSubview:overlayView];
}
Run Code Online (Sandbox Code Playgroud)