per - swift ios html




Come nascondo la barra di stato in un'app Swift iOS? (14)

  1. Vai al file Info.plist
  2. Passa il mouse su una di queste righe e verrà visualizzato un pulsante (+) e (-).
  3. Fare clic sul pulsante più per aggiungere una nuova chiave Digitare all'inizio con V maiuscola e automaticamente la prima scelta sarà Visualizza aspetto barra di stato basata su controller.
  4. Aggiungilo come KEY.
  5. Imposta il VALUE su "NO"
  6. Vai a te AppDelegate.swift
  7. Aggiungi il codice, all'interno del metodo

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
        application.statusBarHidden = true
        return true
    }
    

FATTO! Esegui la tua app e non più la barra di stato!

Mi piacerebbe rimuovere la barra di stato nella parte superiore dello schermo.

Questo non funziona:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
        application.statusBarHidden = true
        return true
}

Ho anche provato:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    application.statusBarHidden = true
    controller.setNeedsStatusBarAppearanceUpdate()

    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "Hello World"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}

È possibile utilizzare questo codice nell'ambito della Class ViewController

open override var prefersStatusBarHidden: Bool { return true }

Dovresti davvero implementare prefersStatusBarHidden sui tuoi controller di visualizzazione:

rapido 2

override func prefersStatusBarHidden() -> Bool {
    return true
}

rapido 3 e successivo

override var prefersStatusBarHidden: Bool {
    return true
}

Giusto per aggiungere, quando si prefersStatusBarHidden override del metodo o della variabile prefersStatusBarHidden , l' View controller-based status bar appearance in Info.plist deve essere YES, altrimenti l'override non avrà alcun effetto


Nel mio caso, stavo cercando la barra di stato da nascondere / mostrare su richiesta; invece di quando la vista si carica o scompare.

rapido 3.x

//show status bar initially
var showStatusBar = true

//set the parameters
override var prefersStatusBarHidden: Bool {

    if showStatusBar == true {

        //does not prefer status bar hidden
        print("does not prefer status bar hidden")
        return false

    } else {

        //does prefer status bar hidden
        print("does prefer status bar hidden")
    return true

    }
}

//ex: hide status bar and call parameter function again whenever you want
        showStatusBar = false
        setNeedsStatusBarAppearanceUpdate()

Nel tuo progetto-> Generale-> Informazioni sulla distribuzione

Stato della barra di stato: -

appena segnato Nascondi barra di stato (iOS 10)


Quindi il problema qui in realtà non ha nulla a che fare con Swift, ma solo come l'aspetto della barra di stato viene gestito da iOS 7.

Per impostazione predefinita, i controller di visualizzazione controllano singolarmente l'aspetto della barra di stato quando sono sullo schermo. Se si desidera utilizzare questo metodo di controllo della barra di stato, è possibile sovrascrivere i metodi seguenti per qualsiasi controller di visualizzazione che si desidera modificare l'aspetto per:

prefersStatusBarHidden , preferredStatusBarStyle , preferredStatusBarAnimation ,

Nel tuo caso, dovresti semplicemente implementare prefersStatusBarHidden e restituire true .

L'altro modo sarebbe controllare l'aspetto della barra di stato a livello di applicazione. Questo sembra essere ciò che stai effettivamente cercando di fare (impostando application.statusBarHidden ).

Per fare in modo che funzioni, è necessario aprire il file Info.plist dell'app e aggiungere la chiave UIViewControllerBasedStatusBarAppearance e assegnargli un valore NO .


Se si desidera nascondere e riportare la barra di stato sul pulsante , è possibile utilizzare questo metodo: -

Per nascondere la barra di stato: -

UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar

Per riportare la barra di stato: -

UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal 

Swift 4

//MARK:- Show Status Bar
UIApplication.shared.isStatusBarHidden = true

//MARK:- Hide Status Bar
UIApplication.shared.isStatusBarHidden = false

Una soluzione che funziona per me; se si desidera nascondere la barra di stato su un controller di visualizzazione specifico durante il caricamento:

import UIKit

class ViewController: UIViewController {

private var hideStatusBar: Bool = false

override var prefersStatusBarHidden: Bool {
    return hideStatusBar
}

override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
    return UIStatusBarAnimation.slide
}

override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundcolor = .white
    hideStatusBar = true

    UIView.animate(withDuration: 0.3) {
        self.setNeedsStatusBarAppearanceUpdate()
    }
}

Attenzione: se si imposta la chiave " Visualizza aspetto barra di stato basata su controller " su " NO " nel file info.plist, il codice riportato sopra non funziona. Dovresti impostare la chiave su " " o rimuoverla da info.plist


se preferisci un approccio visivo piuttosto che un codice, usa questo metodo: nel tuo info.plist

è sufficiente aggiungere l' View controller-based status bar appearance a NO

e la Status bar is initially hidden come YES


Swift 3

In Info.plist set View controller-based status bar appearance NO

E chiama UIApplication.shared.isStatusBarHidden = true


 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true);
    navigationController?.navigationBar.hidden = true // for navigation bar hide
    UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide
}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        application.isStatusBarHidden = true
        return true
    }




swift