【问题标题】:Overlay a view over whole screen, when using UITabBarController?使用 UITabBarController 时覆盖整个屏幕的视图?
【发布时间】:2011-04-20 22:20:15
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c ios uitabbarcontroller hud


    【解决方案1】:

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

    [[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
    

    【讨论】:

    • 这个解决方案的问题是覆盖层颠倒过来,并且不旋转。有谁知道解决这个问题?
    • 方向只传递给添加到窗口的第一个视图控制器。如果您只添加一个视图(没有控制器),您必须先设置状态栏的旋转(请参阅此处的答案:stackoverflow.com/questions/4436530/…
    【解决方案2】:

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

    我对这个解决方案的问题是覆盖出现了 倒置,不旋转。

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

    解决方案很简单。您可以将 myNewView 添加到 UITabBarController 的视图中。

    [self.tabBarController.view addSubview:myNewView];
    

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

    【讨论】:

      【解决方案3】:
      UIView *modal = [[UIView alloc] initWithFrame:self.view.window.frame];
      [self.view.window addSubview:modal];
      

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

      【讨论】:

        【解决方案4】:

        rdelmar's answer to another question 的启发,我建议将您的UITabBarController 放在Container View other ViewController 中。然后将您的 hud 添加到 ViewController 视图中。

        【讨论】:

        • 当您参考其他人的答案时,您需要按姓名提及他们。我已经编辑了你的答案以符合这一点。如需更多信息,请参阅我们的referencing guidelines
        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-27
          • 1970-01-01
          • 1970-01-01
          • 2021-05-09
          • 1970-01-01
          • 2015-05-17
          相关资源
          最近更新 更多