web-dev-qa-db-de.com

Wie kann ich die Statusleiste in iOS 7 programmatisch ausblenden?

Wie kann ich in ios7 die statusbar programmgesteuert ausblenden? Ich verwende XCode 4.6.1 ( ios6.1 ) und möchte dies in XCode selbst implementieren.

34
Magesh

in iOS7 sollten Sie in Ihrem viewController implementieren

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

sie können die Statusleiste ausblenden, um den Schlüsselwert "Anzeige der Controller-basierten Statusleiste" einzustellen. NEIN in plist. Dies ist der einfachste Weg.

oder Sie können den Code mithilfe der Eigenschaft statusBarHidden der UIApplication-Klasse ausblenden.

[[UIApplication sharedApplication] setStatusBarHidden:YES];

Swift 3.0

Statusleiste für einen bestimmten View-Controller ausblenden

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

Hide status bas in der Anwendung 

UIApplication.shared.isStatusBarHidden = true

und legen Sie den Schlüsselwert "Anzeige der Controller-basierten Statusleiste anzeigen" NEIN in der Informationsliste des Projekts.

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

So verstecken Sie sich für einen bestimmten ViewController (und schalten ihn dann wieder ein), wenn View controller-based status bar appearance auf NO eingestellt ist:

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

Wenn Sie es dynamisch auf einem bestimmten View-Controller anzeigen/ausblenden müssen, können Sie so etwas tun.

(Obwohl ich empfehle, nur - (BOOL)prefersStatusBarHidden zu verwenden, um Ihre Präferenz zurückzugeben, wenn Sie es nicht ändern müssen.)

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

Bei iOS> = 7.0 folgenden Code verwenden:

Syntax: 

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

Verwendungszweck:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

In iOS <7.0 verwenden Sie folgenden Code:

Syntax: 

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

Verwendungszweck:

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

auf Swift 4:

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

Ich habe die Erfahrung gemacht, dass Sie sowohl den Code als auch den Wert in der Datei info.plist in iOS 9/Xcode 7.3 benötigen.

Fügen Sie dies Ihrer viewDidLoad -Methode hinzu.

[[UIApplication sharedApplication] setStatusBarHidden:YES];

Fügen Sie dies Ihrer info.plist-Datei als booleschen Wert hinzu und setzen Sie ihn auf NO:

View controller-based status bar appearance
0
Philip Borges

Bei Verwendung von iOS 9.0+ und Swift. Wenn die Statusleiste in einigen View-Controllern ausgeblendet werden soll, aber nicht in allen -, stellen Sie sicher, dass der View controller-based status bar appearance-Wert in Info.plist auf YES gesetzt ist. Andernfalls werden für alle View-Controller dieselben Parameter verwendet.

Und überschreiben Sie prefersStatusBarHidden in der Unterklasse von UIViewController

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

Auf ähnliche Weise kann preferredStatusBarStyle geändert werden.

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

Schnell 4.1

Schritt 1. Setzen Sie View controller-based status bar appearance in Ihrem info.plist aufYES

Schritt 2. Geben Sie einen Code in Ihre UIViewController ein. Die Statusleiste wird ausgeblendet, wenn Sie die UIViewController präsentieren.

private var statusBarIsHidden = false

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

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

Wenn jemand die aktuellste Möglichkeit wollte (Swift 2.1 und der neueste Xcode 7.2)

  1. Setzen Sie "Anzeigen der Controller-basierten Statusleiste in Ihrer info.plist auf NEIN".

  2. UIApplication.sharedApplication (). StatusBarHidden = true // irgendwo in den App-Delegaten eingefügt

0
adam88labs

Versuche dies

[[UIApplication sharedApplication] setStatusBarHidden:YES];
0