web-dev-qa-db-fra.com

Comment masquer la barre d'état par programme dans iOS 7?

Dans ios7 , comment puis-je masquer la statusbar par programmation? J'utilise XCode 4.6.1 ( ios6.1 ) et je souhaite l'implémenter dans XCode lui-même.

34
Magesh

dans iOS7, vous devez implémenter dans votre viewController

- (BOOL)prefersStatusBarHidden {
    return YES;
}
72
Nicolas Manzini

vous pouvez masquer la barre d'état pour définir la valeur de clé "Afficher la vue de l'apparence de la barre d'état basée sur le contrôleur" NON dans. C'est le moyen le plus simple.

ou Vous pouvez masquer dans le code en utilisant la propriété statusBarHidden de la classe UIApplication.

[[UIApplication sharedApplication] setStatusBarHidden:YES];

Swift 3.0

Masquer la barre d'état d'un contrôleur de vue particulier

override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}

Masquer le statut dans l'application 

UIApplication.shared.isStatusBarHidden = true

et définissez la valeur de clé «Afficher l’apparence de la barre d’état basée sur le contrôleur», cliquez sur NO dans la pliste info du projet.

31
Anand Mishra
- (void)viewDidLoad
{
    [super viewDidLoad];
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
    {
        [self prefersStatusBarHidden];
        [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    }
    else
    {
        // iOS 6
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    }
}

// Add this method
- (BOOL)prefersStatusBarHidden {
    return YES;
}
18
user2826529

Pour masquer un ViewController spécifique (puis le réactiver) lorsque View controller-based status bar appearance est défini sur NO:

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
}
5
capikaw

Si vous avez besoin de le masquer/l'afficher dynamiquement sur un contrôleur de vue donné, vous pouvez faire quelque chose comme ceci.

(Bien que je recommande simplement d'utiliser - (BOOL)prefersStatusBarHidden pour renvoyer votre préférence si vous n'avez pas besoin de la changer.)

// view controller header 
@interface MyViewController : UIViewController  {
    BOOL shouldHideStatusBar;
}
@end


@implementation

- (BOOL)prefersStatusBarHidden {
    return shouldHideStatusBar; // backed by your instance variable
}

- (void)setPrefersStatusBarHidden:(BOOL)hidden {
    shouldHideStatusBar = hidden;

    // Don't call this on iOS 6 or it will crash since the 
    // `setNeedsStatusBarAppearanceUpdate` method doesn't exist
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

    // [self setNeedsStatusBarAppearanceUpdate]; // (if Xcode 5, use this)
}

@end
3
zekel

Si iOS> = 7.0, utilisez le code suivant:

Syntaxe: 

// Present in UIViewController of UIKit Frameworks
- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO

Usage:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Dans iOS <7.0, utilisez le code suivant:

Syntaxe: 

// Present in UIApplication of UIKit Frameworks
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);

Usage:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
1
Jayprakash Dubey

sur Swift 4:

    UIApplication.shared.isStatusBarHidden = ..true/false
0
ingconti

D'après mon expérience, vous avez besoin du code et de la valeur du fichier info.plist dans iOS 9/Xcode 7.3.

Ajoutez ceci à votre méthode viewDidLoad .

[[UIApplication sharedApplication] setStatusBarHidden:YES];

Ajoutez ceci à votre fichier info.plist en tant que valeur booléenne et réglez-le sur NO:

View controller-based status bar appearance
0
Philip Borges

Si vous utilisez iOS 9.0+ et Swift. Si vous souhaitez que la barre d'état soit masquée dans certains contrôleurs de vue mais pas dans tous, assurez-vous que la valeur View controller-based status bar appearance dans Info.plist est définie sur YES sinon les mêmes paramètres seront utilisés dans tous les contrôleurs de vue.

Et remplacez prefersStatusBarHidden dans la sous-classe de UIViewController

override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}

De même peut être fait pour changer preferredStatusBarStyle

override var preferredStatusBarStyle: UIStatusBarStyle {
    get {
        return .lightContent
    }
}
0
esesmuedgars

Swift 4.1

étape 1. Définissez View controller-based status bar appearance dans votre info.plist surOUI

étape 2. Tapez du code dans votre UIViewController, la barre d'état se cachera lorsque vous présenterez la UIViewController.

private var statusBarIsHidden = false

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    statusBarIsHidden = true
    setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden: Bool {
    return statusBarStatus
}
0
alex02rt

Si quelqu'un voulait la méthode la plus récente pour le faire (Swift 2.1 et le dernier Xcode 7.2)

  1. Définissez "Afficher l'apparence de la barre d'état basée sur le contrôleur sur NO dans votre info.plist"

  2. UIApplication.sharedApplication (). StatusBarHidden = true // place le délégué de l'application quelque part (applicationWill ou DidFinishLaunchingWithOptions:

0
adam88labs

Essaye ça

[[UIApplication sharedApplication] setStatusBarHidden:YES];
0