Iphone 检查选项卡栏在iOS应用程序上是否可见
我正在开发一个iOS应用程序,它有一个用于显示选项卡栏的UITabBarController。 在某些地方,我展示了一个隐藏选项卡栏的modalView全屏 我想检测用户何时可以看到我的选项卡栏。 是否有任何方法可以在de tabBar是否可见时自动检查 我试过: 但它确实不起作用,因为tabBar并没有真正隐藏起来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");
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想要什么。