使用UITabBarController时覆盖整个屏幕的视图?

时间:2010-10-04 17:21:02

标签: iphone objective-c ios uitabbarcontroller hud

我想在UITabBarController设置中在整个屏幕上叠加HUD风格的透明图形。执行此操作的按钮位于第一个选项卡的屏幕(FirstViewController)中,覆盖图也应覆盖选项卡......这可能吗?

5 个答案:

答案 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视图中。

screenshot for answer

答案 4 :(得分:0)

我真的很喜欢Chase Robert在这里写的东西,所以我想提供Swift 3.版本:

    if let window = view.window {
        let subView = UIView(frame: window.frame)
        window.addSubview(subView)
    }

我也添加了条件,所以如果没有窗户,你就不会崩溃。