Iphone 将视图放在选项卡栏的前面

Iphone 将视图放在选项卡栏的前面,iphone,objective-c,uitabbarcontroller,Iphone,Objective C,Uitabbarcontroller,我正在尝试构思一种方法,可以将视图浮动到选项卡栏的顶部。这基本上涵盖了它。我不知道该怎么办。如果选项卡栏本身是另一个控制器的子视图,那么这看起来很容易,但据我所知,如果不“滥用”视图控制器方法(即addSubview:tabbar.view或类似方法),您就无法真正做到这一点 基本上,iphone屏幕上的空间是有限的,选项卡栏是导航栏,但有时我想用这个空间简单地显示信息。如果选项卡栏是我的根控制器,我认为这是不可能的 我在这里读过其他帖子,建议在按下时使用sethidesbottombars,但

我正在尝试构思一种方法,可以将视图浮动到选项卡栏的顶部。这基本上涵盖了它。我不知道该怎么办。如果选项卡栏本身是另一个控制器的子视图,那么这看起来很容易,但据我所知,如果不“滥用”视图控制器方法(即addSubview:tabbar.view或类似方法),您就无法真正做到这一点

基本上,iphone屏幕上的空间是有限的,选项卡栏是导航栏,但有时我想用这个空间简单地显示信息。如果选项卡栏是我的根控制器,我认为这是不可能的

我在这里读过其他帖子,建议在按下时使用
sethidesbottombars
,但我没有使用导航控制器,我还想动态控制该条何时被另一个视图隐藏或覆盖,这样我可以在需要时移动新视图,并再次显示选项卡栏


如果您有任何其他建议可以为我指明正确的方向,我们将不胜感激。

您可以使用根窗口。如果您只是从
[[UIApplication sharedApplication]keyWindow]
获取主窗口,则可以直接向该窗口添加视图。这将允许您再次在屏幕上的任何位置浮动任何内容。你仍然会有一些小麻烦来处理面对面旋转,但是如果你不做自动旋转,那么就简单到不用担心它


另一个选择是实际创建一个新的,并将内容放在任何你想要的地方。这就是
UIAlertView
s的实际工作方式。这样,它根本不会干扰视图层次结构。此方法有一个问题,即只有一个窗口将向其子视图发送事件(包括触摸)。因此,使用它基本上允许用户仍然触摸下面的条。第一个选项可能更好,但我只是把它扔出去,以防有人发现它有用。

我建议如下

UIView
   |
    --UIView (this will hold the tab bar controller)
        |
         -- Tabbar controller
   |
    --Full Screen View
因此,选项卡栏基本上是封闭在UIView中的。这将添加到主UIView中。当您想要全屏显示时,可以将该视图添加到主UI视图中。因此,无需隐藏/取消隐藏选项卡栏。

类似的内容:

if let indeedTabBarController = self.tabBarController {

    let buttonHeight: CGFloat = 49 // height of tab bar
    let buttonWidth = UIScreen.main.bounds.width / 3 // in case if you have 3 tabs
    let frame = CGRect(x: 0, y: UIScreen.main.bounds.height - buttonHeight, width: buttonWidth, height: buttonHeight)
    let button = UIButton(frame: frame)
    button.addTarget(self, action: #selector(self.someAction), for: .touchUpInside)

    indeedTabBarController.view.addSubview(button)
}

您应该为uitabar类创建子类。或者看看这里:我喜欢Brad在这个问题上的回答,关于使用你自己的图像视图来模拟标签栏。简单灵活向UIView添加选项卡栏控制器的最佳语法是什么?这是否类似于使用
addSubview:tabbarcontroller.view
?请解释更多,这有点含糊不清[[UIApplication sharedApplication]keyWindow],非常感谢