簡體   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