如何隐藏标签栏控制器? 我想在UIImageView上双击隐藏Tab Bar控制器。
答案 0 :(得分:34)
试试这段代码:
[self.tabBarController.tabBar setHidden:YES];
需要定义tabbarcontroller ...
修改强>
AppDelegateFileName *appDelegate = (AppDelegateFileName *) [[UIApplication sharedApplication] delegate];
[appDelegate.tabbarController.tabBar setHidden:YES];
在执行此操作之前,请确保在appDelegate .h文件中创建tabbarController
的@property声明。
答案 1 :(得分:11)
如果使用Storyboard,您只需取消选中ViewController的Attribute Inspector中的复选框即可。它被称为“在推动时隐藏底栏”。确实非常方便,并且在从tabBar-less viewController导航回来之后无需再次处理tabBar的显示。我不知道引入了哪个XCode版本,但它适用于XCode 6 +。
答案 2 :(得分:5)
使用TapGesture Recognizer检测UIIMageview上的双击。然后调用检测双重双击的方法。在该方法中添加以下代码行。
self.tabBarController.tabBar.hidden=YES;
希望这有帮助。
答案 3 :(得分:4)
使用以下代码以动画样式隐藏/显示标签栏控制器
hiddenTabBar
是BOOL
变量。
- (void) hidetabbar {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.0];
for(UIView *view in objtabbar.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
if (hiddenTabBar) {
[view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
}
} else {
if (hiddenTabBar) {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
}
}
}
[UIView commitAnimations];
hiddenTabBar = !hiddenTabBar;
}
答案 4 :(得分:1)
UIViewController有一个属性
@property(nonatomic, readonly, retain) UITabBarController *tabBarController
你可以设置:
self.tabBarController.tabBar.hidden = YES;
答案 5 :(得分:1)
Swift 2.1:
set
答案 6 :(得分:1)
如果您想使用动画进行更改,可以使用以下代码:
extension UITabBarController {
func set(visible: Bool, animated: Bool, completion: ((Bool)->Void)? = nil ) {
guard isVisible() != visible else {
completion?(true)
return
}
let offsetY = tabBar.frame.size.height
let duration = (animated ? 0.3 : 0.0)
let beginTransform:CGAffineTransform
let endTransform:CGAffineTransform
if visible {
beginTransform = CGAffineTransform(translationX: 0, y: offsetY)
endTransform = CGAffineTransform.identity
} else {
beginTransform = CGAffineTransform.identity
endTransform = CGAffineTransform(translationX: 0, y: offsetY)
}
tabBar.transform = beginTransform
if visible {
tabBar.isHidden = false
}
UIView.animate(withDuration: duration, animations: {
self.tabBar.transform = endTransform
}, completion: { compete in
completion?(compete)
if !visible {
self.tabBar.isHidden = true
}
})
}
func isVisible() -> Bool {
return !tabBar.isHidden
}
}
中阅读更多内容
答案 7 :(得分:0)
将视图推送到新视图时尝试此操作:
self.tabbarconroller.tabbar.hidden = YES;
答案 8 :(得分:0)
目标-C
[self.tabBarController.tabBar setHidden:YES];
Swift 3
self.tabBarController?.tabBar.isHidden = true
Swift 2
self.tabBarController?.tabBar.hidden = true
答案 9 :(得分:0)
Objective-C
[self.tabBarController.tabBar setHidden:YES];
Objective-C 2.0
self.tabBarController.tabBar.hidden =是;
迅速 在iOS 9之前
tabBarController?.tabBar.hidden = true
快速iOS 9及更高版本
tabBarController?.tabBar.isHidden = true
使用Swift 5及更高版本的其他技巧:如果您想更改hidden属性,请对其进行切换
if let t = tabBarController?.tabBar {
t.isHidden = t.!isHidden
}
// is equal to
tabBarController?.tabBar.isHidden.toggle()
答案 10 :(得分:0)
多个根视图控制器的快速解决方案
如果您或某人需要将标签栏隐藏在自定义控制器中,则对于使用多个rootViewController
的应用,请尝试以下操作:
//instantiate appDelegate in your controller first
let appDelegate = UIApplication.shared.delegate as! AppDelegate
//then just hide the tab bar as following
appDelegate.window?.rootViewController?.tabBarController?.tabBar.isHidden = true