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

Posted

技术标签:

【中文标题】如何在 ios7 中将 UIView 对象添加到 self.view.window?【英文标题】:How can I add UIView object to self.view.window in ios7? 【发布时间】:2014-02-04 09:33:52 【问题描述】:

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

为了做到这一点,我将UIView 对象添加到UIViewController 的窗口属性中,如下所示。我记得我可以在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];

【问题讨论】:

感谢您的回复。它在表格视图内部添加了一个视图,因此它不会覆盖导航栏和标签栏。 【参考方案1】:

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

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

【讨论】:

它运行没有任何错误,但我的视图没有显示。【参考方案2】:

根据 UIView 的文档,如果视图尚未添加到窗口中,则 window 属性为 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];

【讨论】:

【参考方案3】:

斯威夫特 3

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

【讨论】:

【参考方案4】:

你可以这样试试

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

希望对你有所帮助……

【讨论】:

以上是关于如何在 ios7 中将 UIView 对象添加到 self.view.window?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ViewController 中将 AVPlayer 添加到 UIView

如何在使用 canDisplayBannerAds 的 iOS7 应用程序中将 iAd 移动到屏幕顶部?

如何在 iOS 中将 UIView 添加到 UIScrollView 中(具有动态内容的视图)

在iOS7中将屏幕内容捕获为UIImage

如何在一行代码中将多个子视图添加到我的 iOS 视图中? (也许通过“monkeypatching”一个 `addSubviews` 实例方法到 UIView?)

在 Swift 中将多个 UIButton 添加到多个 UIView