我想在 UITabBarController 设置中将 HUD 样式的透明图形覆盖在整个屏幕上。执行此操作的按钮位于第一个选项卡的屏幕(FirstViewController)中,并且覆盖层也应该覆盖选项卡......这可能吗?
问问题
10450 次
5 回答
27
您可以将新视图直接附加到您的窗口。
[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
于 2010-10-04T17:23:13.433 回答
13
Henrik P. Hessel的上述解决方案很好,但该解决方案存在一个问题。elsurudo在答案下方的评论中已经提到了这个问题。
我对这个解决方案的问题是覆盖层颠倒过来,并且不旋转。
我遇到了同样的问题,我尝试了不同的方法,我找到了一种解决方案来消除这个问题。
解决方案很简单。您可以将其添加myNewView
到UITabBarController
的视图中。
[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 回答