Jak ukryć pasek stanu w aplikacji Swift na iOS?
Chciałbym usunąć pasek stanu u góry ekranu.
To nie działa:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
Ja też próbowałem:
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
}
22 answers
Naprawdę powinieneś zaimplementować prefersStatusBarHidden na kontrolerze widoku:
Swift 2
override func prefersStatusBarHidden() -> Bool {
return true
}
Swift 3 i później
override var prefersStatusBarHidden: Bool {
return true
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-10 05:08:48
- Przejdź do Info.plik plist
- najedź kursorem na jedną z tych linii, a pojawi się przycisk ( + ) i ( -).
- Kliknij przycisk plus, aby dodać nowy typ klucza na początku z wielką literą V, A automatycznie pierwszym wyborem będzie wygląd paska stanu opartego na kontrolerze widoku.
- dodaj to jako klucz.
- Ustaw wartość na " nie "
- Idź do Ciebie AppDelegate.swift
-
Dodaj kod wewnątrz metody
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool { application.statusBarHidden = true return true }
Zrobione! Uruchom aplikację i koniec pasek stanu!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-19 03:33:20
Swift 3
In Info.plist
set View controller-based status bar appearance
to NO
I wywołanie UIApplication.shared.isStatusBarHidden = true
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-12 19:54:07
Jeśli wolisz podejście wizualne niż kodowanie, użyj tej metody:
w Twoim info.plist
wystarczy dodać View controller-based status bar appearance
do NO
I Status bar is initially hidden
jako YES
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-16 14:00:16
Aktualizacja dla iOS 10 / Swift 3.0
Już nie Funkcja, teraz właściwość...
override var prefersStatusBarHidden: Bool {
return true
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-26 07:36:32
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true);
navigationController?.navigationBar.hidden = true // for navigation bar hide
UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-11 07:14:38
Jeśli chcesz ukryć i przywrócić pasek stanu na przycisku dotknij , podczas gdy w momencie prezentacji i odrzucenia menu slide-in, popups etc, wtedy możesz użyć tej metody:-
Aby ukryć pasek stanu:-
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar
Aby przywrócić pasek stanu:-
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 04:26:50
W Swift 3.x:
override func viewWillAppear(_ animated: Bool) {
UIApplication.shared.isStatusBarHidden = true
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-09 07:20:39
Więc problem tutaj w rzeczywistości nie ma nic wspólnego z Swift, ale jak wygląd paska stanu jest obsługiwany w systemie iOS 7.
Domyślnie Kontrolery widoku indywidualnie kontrolują wygląd paska stanu, gdy znajdują się na ekranie. Jeśli chcesz użyć tej metody kontrolowania paska stanu, możesz nadpisać następujące metody dla dowolnych kontrolerów widoku, dla których chcesz zmodyfikować wygląd:
prefersStatusBarHidden
,
preferredStatusBarStyle
,
preferredStatusBarAnimation
,
W Twoim przypadku, po prostu implementacja prefersStatusBarHidden
I return true
.
Innym sposobem byłoby kontrolowanie wyglądu paska stanu na poziomie aplikacji. Wydaje się, że to właśnie próbujesz zrobić (ustawiając application.statusBarHidden
).
Aby to zadziałało, musisz otworzyć plik Info.plist
aplikacji i dodać klucz UIViewControllerBasedStatusBarAppearance
i nadać mu wartość NO
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-09 01:23:28
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-25 11:52:51
Sam to rozgryzłem. Dodam moje rozwiązanie jako inną opcję.
extension UIViewController {
func prefersStatusBarHidden() -> Bool {
return true
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-16 05:25:12
Ok, więc staje się to problemem dla mnie, ponieważ iOS 9 nie obsługuje żadnej powyższej metody, o której ludzie tutaj wspomniali, takiej jak UIApplication.sharedApplication().statusBarHidden = true
lub
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
I
override func prefersStatusBarHidden() -> Bool {
return true
}
Działa, ale nie zapewnia programowalnego rozwiązania, w którym mogę zmienić pod warunkiem.
(statusBarHidden = true
i statusBarHidden = false
Jak to robiliśmy wcześniej).
Rozwiązanie tego szaleństwa:
Dodając do prefersStatusBarHidden()
jak poniżej możesz programowo sterować ukrywaniem i pokazywaniem paska stanu bez dodawania ustawień UIViewControllerBasedStatusBarAppearance
do informacji .plist :
var showStatusBar = true
override func prefersStatusBarHidden() -> Bool {
if showStatusBar {
return false
}
return true
}
private func showStatusBar(enabled: Bool) {
showStatusBar = enabled
prefersStatusBarHidden()
}
Następnie użyj go w ten sposób w całym swoim kodzie:
//Hide Status Bar
showStatusBar(false)
Lub
//Show Status Bar
showStatusBar(true)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 00:43:18
Aby dodać, przy nadpisywaniu prefersStatusBarHidden
metody lub zmiennej, View controller-based status bar appearance
W Info.plist musi być tak, w przeciwnym razie obejście nie będzie miało żadnego efektu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 19:08:37
W moim przypadku Szukałem paska stanu, aby ukryć / pokazać na żądanie; zamiast po prostu, gdy Widok ładuje się lub znika.
Swift 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()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-10 23:54:34
Używam Xcode 8.1 (8B62) z celem wdrożenia ustawionym na 10.1 i nie miałem dużo szczęścia z opcjami nadpisywania wspomnianymi powyżej. Jednak sprawdzanie opcji "Ukryj pasek stanu" w informacji o wdrożeniu załatwiło mi sprawę.
Mam nadzieję, że to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 21:24:28
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.isStatusBarHidden = true
return true
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-10 09:30:27
Możesz użyć tego kodu w swoim ViewController
Class
scope
open override var prefersStatusBarHidden: Bool { return true }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 06:17:28
W Twoim projekcie->Ogólne - > informacje o wdrożeniu
Styl Statusbar:--
Po prostu zaznaczony pasek stanu Ukryj (iOS 10)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-07 07:12:45
Rozwiązanie, które działa dla mnie; jeśli chcesz ukryć pasek stanu na określonym kontrolerze widoku podczas ładowania:
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()
}
}
Uwaga: Jeśli ustawisz klucz " Wyświetl pasek stanu oparty na kontrolerze appearance" na " NO" w informacji.plist powyższy kod nie działa. Powinieneś ustawić klucz na " YES " lub Usuń z info.plist
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 14:23:17
Swift 4
//MARK:- Show Status Bar
UIApplication.shared.isStatusBarHidden = true
//MARK:- Hide Status Bar
UIApplication.shared.isStatusBarHidden = false
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-24 09:48:32
W Twoim projekcie Ogólne - > informacje o wdrożeniu - > styl paska stanu zaznacz zaznaczenie paska stanu Ukryj Uwaga: - ukrywa pasek stanu w całej aplikacji
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 05:56:16
self.navigationController?.isNavigationBarHidden = true
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-29 11:28:32