12

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

4

5 回答 5

27

您可以将新视图直接附加到您的窗口。

[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
于 2010-10-04T17:23:13.433 回答
13

Henrik P. Hessel的上述解决方案很好,但该解决方案存在一个问题。elsurudo在答案下方的评论中已经提到了这个问题。

我对这个解决方案的问题是覆盖层颠倒过来,并且不旋转。

我遇到了同样的问题,我尝试了不同的方法,我找到了一种解决方案来消除这个问题。

解决方案很简单。您可以将其添加myNewViewUITabBarController的视图中。

[self.tabBarController.view addSubview:myNewView];

希望对以后的访问者有用。

于 2013-09-18T14:27:40.030 回答
3
UIView *modal = [[UIView alloc] initWithFrame:self.view.window.frame];
[self.view.window addSubview:modal];

这可能与[[UIApplication sharedApplication] keyWindow]上面提到的相同。但我喜欢通过当前视图引用它。

于 2014-11-26T00:13:10.767 回答
2

受到rdelmar 对另一个问题的回答的启发,我建议将您的 UITabBarController 放在 Container View otherViewController中。然后将您的 hud 添加到ViewController视图中。

答案截图

于 2017-09-29T06:05:11.570 回答
1

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

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

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

于 2017-07-24T20:51:53.880 回答