IPhoneの写真のようにデバイスをタップしたときにステータスバーとナビゲーションバーを非表示にする方法使っていた
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.Slide)
しかし、それは機能していません。
編集:ステータスバーとナビゲーションバーを非表示にしたいのですが、永久に非表示にしたくないのです。
Swift 5およびiOS 12では、必要に応じて、問題を解決するために次の3つのコードスニペットのいずれかを選択できます。
UINavigationController
hidesBarsOnTap
プロパティ+ UIViewController
prefersStatusBarHidden
およびpreferredStatusBarUpdateAnimation
プロパティの使用IOS 8以降、UINavigationController
にはhidesBarsOnTap
プロパティがあります。 hidesBarsOnTap
には次の 宣言 があります。
_var hidesBarsOnTap: Bool { get set }
_
Navigation Controllerがタップジェスチャを使用してバーの非表示を許可するかどうかを示すブール値。
AppleはhidesBarsOnTap
についても述べています:
このプロパティの値が
true
の場合、Navigation Controllerは、コンテンツ領域の未処理のタップに応じて、Navigationバーとツールバーの非表示と表示を切り替えます。このプロパティのデフォルト値はfalse
です。
次のコードは、hidesBarsOnTap
を実装する方法を示しています。
_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
}
}
_
UINavigationController
setNavigationBarHidden(_:animated:)
メソッド+ UIViewController
prefersStatusBarHidden
およびpreferredStatusBarUpdateAnimation
プロパティとUIButton
の使用UINavigationController
にはsetNavigationBarHidden(_:animated:)
というメソッドがあります。 setNavigationBarHidden(_:animated:)
には次の 宣言 があります。
_func setNavigationBarHidden(_ hidden: Bool, animated: Bool)
_
ナビゲーションバーを非表示にするかどうかを設定します。
次のコードは、ストーリーボードでUIButton
を設定し、_@IBAction
_にリンクしたsetNavigationBarHidden(_:animated:)
を使用して、ステータスバーとナビゲーションバーを切り替える方法を示しています。
_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
}
}
_
UINavigationController
setNavigationBarHidden(_:animated:)
メソッド+ UIViewController
prefersStatusBarHidden
およびpreferredStatusBarUpdateAnimation
プロパティとUIGestureRecognizer
の使用前のコードの代替として、UIGestureRecognizer
の代わりにUIButton
とともにsetNavigationBarHidden(_:animated:)
を使用できます。
_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
}
}
_
UIViewControllerBasedStatusBarAppearance
がtrue
に設定されていることを確認してください。仕事。IOS 8以降では、単に hidesBarsOnTap を使用できます。
navigationController?.hidesBarsOnTap = true