【发布时间】:2011-04-20 22:20:15
【问题描述】:
我想在 UITabBarController 设置中将 HUD 样式的透明图形覆盖在整个屏幕上。执行此操作的按钮位于第一个选项卡的屏幕(FirstViewController)中,并且覆盖层也应该覆盖选项卡......这可能吗?
【问题讨论】:
标签: iphone objective-c ios uitabbarcontroller hud
我想在 UITabBarController 设置中将 HUD 样式的透明图形覆盖在整个屏幕上。执行此操作的按钮位于第一个选项卡的屏幕(FirstViewController)中,并且覆盖层也应该覆盖选项卡......这可能吗?
【问题讨论】:
标签: iphone objective-c ios uitabbarcontroller hud
您可以将新视图直接附加到您的窗口。
[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
【讨论】:
Henrik P. Hessel 的上述解决方案很好,但该解决方案存在一个问题。 elsurudo 在答案下方的评论中已经提到了这个问题。
我对这个解决方案的问题是覆盖出现了 倒置,不旋转。
我遇到了同样的问题,我尝试了不同的方法,我找到了一种解决方案来解决这个问题。
解决方案很简单。您可以将 myNewView 添加到 UITabBarController 的视图中。
[self.tabBarController.view addSubview:myNewView];
希望对以后的访问者有用。
【讨论】:
UIView *modal = [[UIView alloc] initWithFrame:self.view.window.frame];
[self.view.window addSubview:modal];
这可能与上面提到的[[UIApplication sharedApplication] keyWindow] 相同。但我喜欢通过当前视图引用它。
【讨论】:
受rdelmar's answer to another question 的启发,我建议将您的UITabBarController 放在Container View other ViewController 中。然后将您的 hud 添加到 ViewController 视图中。
【讨论】:
我真的很喜欢 Chase Robert 在这里写的东西,所以我想也提供 Swift 3. 版本:
if let window = view.window {
let subView = UIView(frame: window.frame)
window.addSubview(subView)
}
我也添加了条件,所以如果没有窗口,你就不会崩溃。
【讨论】: