web-dev-qa-db-fra.com

Comment masquer le contrôleur de la barre d'onglets?

Comment masquer le contrôleur de la barre d'onglets? Je souhaite masquer le contrôleur de la barre d'onglets en tapotant deux fois sur UIImageView.

21
Gaurav Patel

Essayez ce code:

[self.tabBarController.tabBar setHidden:YES];

où tabbarcontroller doit être défini ...

MODIFIER

AppDelegateFileName *appDelegate = (AppDelegateFileName *) [[UIApplication sharedApplication] delegate];
[appDelegate.tabbarController.tabBar setHidden:YES];

avant de faire cela, assurez-vous de créer une déclaration @property de tabbarController dans le fichier appDelegate .h.

33
DShah

Si vous utilisez des Storyboards, vous pouvez simplement décocher une case dans l'inspecteur des attributs de votre ViewController. C'est ce qu'on appelle "Masquer la barre inférieure sur Push". Très pratique, et nul besoin de gérer à nouveau l'affichage de la barre de tabulation après la navigation dans votre viewController sans tabBar. Je ne sais pas dans quelle version XCode cela a été introduit, mais c'est là pour XCode 6 +.

8
pIkEL

Utilisez TapGesture Recognizer pour détecter les doubles appuis sur UIIMageview. Invoquez ensuite une méthode de détection de la double frappe double. Ajoutez la ligne de code suivante dans cette méthode.

self.tabBarController.tabBar.hidden=YES;

J'espère que cela t'aides.

5
booleanBoy

Utilisez le code ci-dessous pour masquer/afficher le contrôleur de barre d’onglet dans un style animé.
hiddenTabBar est une variable 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
AppsDev

Swift 2.1:

self.tabBarController!.tabBar.hidden = true
1

UIViewController a une propriété

@property(nonatomic, readonly, retain) UITabBarController *tabBarController

que vous pouvez définir:

self.tabBarController.tabBar.hidden = YES;
1
drct

Si vous voulez changer d'animation, vous pouvez utiliser ce code:

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

Plus vous pouvez lire dans https://stackoverflow.com/a/50101262/1797194

0
bazyl87

Objectif c

[self.tabBarController.tabBar setHidden:YES];

Swift 3 

self.tabBarController?.tabBar.isHidden = true

Swift 2

self.tabBarController?.tabBar.hidden = true
0
Allen Wang

Essayez ceci en poussant la vue vers la nouvelle vue:

self.tabbarconroller.tabbar.hidden = YES;
0
AJPatel