Iphone 检查选项卡栏在iOS应用程序上是否可见

Iphone 检查选项卡栏在iOS应用程序上是否可见,iphone,ios,ipad,uitabbarcontroller,tabbar,Iphone,Ios,Ipad,Uitabbarcontroller,Tabbar,我正在开发一个iOS应用程序,它有一个用于显示选项卡栏的UITabBarController。 在某些地方,我展示了一个隐藏选项卡栏的modalView全屏 我想检测用户何时可以看到我的选项卡栏。 是否有任何方法可以在de tabBar是否可见时自动检查 我试过: 但它确实不起作用,因为tabBar并没有真正隐藏起来 if ([[[appdelegate tabBarController] tabBar] isHidden]) { NSLog(@"tabBar IS HIDDEN");

我正在开发一个iOS应用程序,它有一个用于显示选项卡栏的UITabBarController。 在某些地方,我展示了一个隐藏选项卡栏的modalView全屏

我想检测用户何时可以看到我的选项卡栏。 是否有任何方法可以在de tabBar是否可见时自动检查

我试过:

但它确实不起作用,因为tabBar并没有真正隐藏起来

if ([[[appdelegate tabBarController] tabBar] isHidden])
{
    NSLog(@"tabBar IS HIDDEN");
}
else
{
    NSLog(@"tabBar IS VISIBLE");
}
我在BaseViewController中编写此代码,它是我的模态视图和项目的其他视图的超类

谢谢。

你可以试试这个

if ([[[self tabBarController] tabBar] isHidden]){

    NSLog(@"tabBar IS HIDDEN");
}
else
{
    NSLog(@"tabBar IS VISIBLE");
}

检查此
[[[self tabBar controller]tabBar]ishiden]
可以,但在一种情况下会失败。如果该视图中根本没有选项卡栏,则
[self-tabBarController]
返回
nil
,因此调用isHidden将返回NO,这是事实,但您必须检测到另一种情况。它不是隐藏的,但不会退出,所以,除了检查您应该添加
[self-tabBarController]!=无
。所以基本上:

if([self tabBarController] && ![[[self tabBarController] tabBar] isHidden]){
    //is visible
} else {
    //is not visible or do not exists so is not visible
}

检查
选项卡栏
窗口
属性。当
ui视图
不可见时,此属性设置为
nil

if((BOOL)[[[self tabBarController] tabBar] window])
{
    // visible
}
else
{
    // not visible
}

这可能是最简单的方法:(假设您不直接使用视图)

要推送到navigationController的ViewController在推送时有一个属性HidesBottomBar。
只需在视图控制器中检查是否为“是”,就可以知道选项卡栏是否隐藏。

Swift 3/4+中回答

if
  let tabBarController = self.tabBarController,
  !tabBarController.tabBar.isHidden {
  // tabBar is visible
} else {
  // tabBar either is not visible or does not exist
}
我在Swift中使用此选项:

tabBarController?.tabBar.isHidden ?? true
我使用它来查找选项卡栏的高度:

var tabBarHeight: CGFloat {
    if tabBarController?.tabBar.isHidden ?? true { return 0 }
    return tabBarController?.tabBar.bounds.size.height ?? 0
}

你可以看看这个

if let tabBarController = self.tabBarController, !tabBarController.hidesBottomBarWhenPushed, !tabBarController.tabBar.isHidden {
  print("tab bar visible")
} else { 
  print("tab bar hidden")
}

当您在tabBar控制器上显示VC时,
tabBar.ishiden
属性仍然是
false
。因此,为这个场景添加一点备份代码就可以了

private func isTabBarVisible()->Bool{
var isTabBarVisible=false
如果让tabBarController=navigationController?.tabBarController、tabBarController.tabBar.isHidden{
isTabBarVisible=true
}
如果让navigationController=navigationController,则按下navigationController.HidesBottomBar{
isTabBarVisible=true
}
if isModal(){
isTabBarVisible=true
}

打印(“我尝试了
if([[self-tabBarController]tabBar]ishiden])
,它工作得很好。这应该是可以接受的答案,除了这里回答的大多数其他人之外,你知道OP想要什么。