我想在UITabBarController设置中在整个屏幕上叠加HUD风格的透明图形。执行此操作的按钮位于第一个选项卡的屏幕(FirstViewController)中,覆盖图也应覆盖选项卡......这可能吗?
答案 0 :(得分:28)
您可以直接将新视图附加到窗口。
[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
答案 1 :(得分:13)
Henrik P. Hessel 的上述解决方案很好,但该解决方案存在一个问题。 elsurudo 已经在答案下面的评论中提到了这个问题。
我对这个解决方案的问题是叠加层出现了 颠倒,不旋转。
我遇到了同样的问题,我尝试了不同的东西,我得到了一个解决方案来消除这个问题。
解决方案很简单。您可以将myNewView
添加到UITabBarController
的视图中。
[self.tabBarController.view addSubview:myNewView];
希望,它对未来的访客有用。
答案 2 :(得分:2)
UIView *modal = [[UIView alloc] initWithFrame:self.view.window.frame];
[self.view.window addSubview:modal];
这可能与上面提到的[[UIApplication sharedApplication] keyWindow]
相同。但我喜欢通过当前视图来引用它。
答案 3 :(得分:2)
受rdelmar's answer to another question的启发,我建议将您的UITabBarController放在容器视图中ViewController
。然后将您的hud添加到ViewController
视图中。
答案 4 :(得分:0)
我真的很喜欢Chase Robert在这里写的东西,所以我想提供Swift 3.版本:
if let window = view.window {
let subView = UIView(frame: window.frame)
window.addSubview(subView)
}
我也添加了条件,所以如果没有窗户,你就不会崩溃。