如何隐藏标签栏控制器?

时间:2011-09-19 05:34:45

标签: iphone uiimageview uitabbarcontroller touch

如何隐藏标签栏控制器? 我想在UIImageView上双击隐藏Tab Bar控制器。

11 个答案:

答案 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)

使用以下代码以动画样式隐藏/显示标签栏控制器 hiddenTabBarBOOL变量。

- (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
}
}

您可以在https://stackoverflow.com/a/50101262/1797194

中阅读更多内容

答案 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