繁体   English   中英

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

[英]How can I add UIView object to self.view.window in ios7?

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

为了做到这一点,我将UIView对象添加到UIViewController window属性中,如下所示。我记得我能够在ios6中向这样的window添加一个视图。 但是,它在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];
}

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

[[UIApplication sharedApplication].keyWindow addSubview:overlayView];

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

你可以在viewDidAppear:(BOOL)animated;做同样的事情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];
}

斯威夫特3

UIApplication.shared.keyWindow?.addSubview(overlayView);

你可以这样试试

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *overlayView = [[UIView alloc] initWithFrame:self.view.frame];

    overlayView.backgroundColor = [UIColor blackColor];
    overlayView.alpha = 0.8;
    overlayView.center = self.view.center
    [self.view addSubview:overlayView];
}

我希望对你有所帮助......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM