如何在 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 中(具有动态内容的视图)
如何在一行代码中将多个子视图添加到我的 iOS 视图中? (也许通过“monkeypatching”一个 `addSubviews` 实例方法到 UIView?)