webentwicklung-frage-antwort-db.com.de

so blenden Sie die Statusleiste und die Navigationsleiste aus, wenn Sie auf Gerät tippen

So blenden Sie die Statusleiste und die Navigationsleiste aus, wenn Sie auf das Gerät tippen, z. B. Fotos im iPhone?

UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.Slide)

aber es funktioniert nicht.

Bearbeiten : Ich möchte Statusleiste und Navigationsleiste ein- und ausblenden, nicht dauerhaft ausblenden.

25
Aditya Dharma

Mit Swift 4 und iOS 11 können Sie je nach Bedarf einen der drei folgenden Codeausschnitte auswählen, um Ihr Problem zu lösen.


# 1. Verwenden der Eigenschaften UINavigationControllerhidesBarsOnTap sowie der Eigenschaften UIViewControllerprefersStatusBarHidden und preferredStatusBarUpdateAnimation

Seit iOS 8 verfügt UINavigationController über eine hidesBarsOnTap-Eigenschaft. hidesBarsOnTap hat folgende Deklaration :

var hidesBarsOnTap: Bool { get set }

Ein boolescher Wert, der angibt, ob der Navigations-Controller das Ausblenden seiner Balken mithilfe einer Tippen-Geste zulässt.

Apple sagt auch über hidesBarsOnTap:

Wenn der Wert dieser Eigenschaft true ist, ändert der Navigationscontroller das Ausblenden und Anzeigen der Navigationsleiste und der Symbolleiste als Reaktion auf ein ansonsten nicht behandeltes Antippen im Inhaltsbereich. Der Standardwert dieser Eigenschaft ist false.

Der folgende Code zeigt, wie hidesBarsOnTap implementiert wird:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationController?.hidesBarsOnTap = true
    }

    override var prefersStatusBarHidden: Bool {
        return navigationController?.isNavigationBarHidden == true
    }

    override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
        return UIStatusBarAnimation.slide
    }

}

# 2. Verwenden der Eigenschaften UINavigationControllersetNavigationBarHidden(_:animated:) method + UIViewControllerprefersStatusBarHidden und preferredStatusBarUpdateAnimation mit einer UIButton

UINavigationController hat eine Methode namens setNavigationBarHidden(_:animated:). setNavigationBarHidden(_:animated:) hat die folgende Deklaration :

func setNavigationBarHidden(_ hidden: Bool, animated: Bool)

Legt fest, ob die Navigationsleiste ausgeblendet ist.

Der folgende Code zeigt, wie Sie Ihre Status- und Navigationsleiste umschalten, indem Sie setNavigationBarHidden(_:animated:) mit einer UIButton im Storyboard setzen und mit einem @IBAction verknüpfen:

import UIKit

class ViewController: UIViewController {

    // Link this @IBAction to a `UIButton`
    @IBAction func toggle(_ sender: UIButton) {
        navigationController?.setNavigationBarHidden(navigationController?.isNavigationBarHidden == false, animated: true)
    }

    override var prefersStatusBarHidden: Bool {
        return navigationController?.isNavigationBarHidden == true
    }

    override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
        return UIStatusBarAnimation.slide
    }

}

#3. Verwenden der Eigenschaften UINavigationControllersetNavigationBarHidden(_:animated:) method + UIViewControllerprefersStatusBarHidden und preferredStatusBarUpdateAnimation mit einer UIGestureRecognizer

Alternativ zum vorherigen Code können Sie setNavigationBarHidden(_:animated:) mit einer UIGestureRecognizer anstelle einer UIButton verwenden:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let gesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.toggle))
        view.isUserInteractionEnabled = true
        view.addGestureRecognizer(gesture)
    }

    @objc func toggle() {
        navigationController?.setNavigationBarHidden(navigationController?.isNavigationBarHidden == false, animated: true)
    }

    override var prefersStatusBarHidden: Bool {
        return navigationController?.isNavigationBarHidden == true
    }

    override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
        return UIStatusBarAnimation.slide
    }

}

Sehen Sie diese Antwort für eine ähnliche Frage , wenn Sie iOS 10 als Ziel festlegen möchten.

111
Imanou Petit

Unter iOS 8 und höher können Sie einfach hidesBarsOnTap verwenden:

    navigationController?.hidesBarsOnTap = true
0
Cooliopas