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
}
Próbowałem też:
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
}
Odpowiedzi:
Naprawdę powinieneś zaimplementować prefersStatusBarHidden na swoich kontrolerach widoku:
Swift 3 i nowszy
źródło
Dodaj kod w metodzie
GOTOWE! Uruchom aplikację i nie więcej paska stanu!
źródło
Szybki 3
W
Info.plist
zestawieView controller-based status bar appearance
doNO
I zadzwoń
UIApplication.shared.isStatusBarHidden = true
źródło
Jeśli chcesz ukryć i przywrócić pasek stanu po dotknięciu przycisku , a podczas prezentacji i zamykania menu wysuwanego , wyskakujących okienek itp. Możesz użyć tej metody: -
Aby ukryć pasek stanu: -
Aby przywrócić pasek stanu: -
źródło
prefersStatusBarHidden
właściwości tak, jak już wspomniano.prefersStatusBarHidden
polega na tym, że widoki powiązane z paskiem stanu za pomocą ograniczeń, a także paski nawigacji, będą się poruszać w złym stylu, jeśli włączasz / wyłączasz pasek stanuprefersStatusBarHidden
. W tej chwili tylko ta odpowiedź wydaje się działać.prefersStatusBarHidden
twoje ograniczenie. Jak na razie to działa. Jednak używam małego opakowania, aby uniknąć używania singletonów, możesz je znaleźć tutajjeśli wolisz podejście wizualne niż kodowanie, użyj tej metody: w swoim
info.plist
po prostu dodaj
View controller-based status bar appearance
doNO
i
Status bar is initially hidden
jakYES
źródło
źródło
Aktualizacja dla iOS 10 / Swift 3.0
Nie jest już funkcją, teraz jest właściwością ...
źródło
get { }
jeśli nie maszset
, po prostu napiszreturn true
w Swift 3.x:
źródło
Przejdź do swojej Info.plist i dodaj dwa klucze:
źródło
Tak więc ten problem nie ma nic wspólnego z Swift, ale z tym, jak obsługiwany jest wygląd paska stanu w iOS 7.
Domyślnie kontrolery widoków indywidualnie kontrolują wygląd paska stanu, gdy są na ekranie. Jeśli chcesz użyć tej metody kontrolowania paska stanu, możesz zastąpić następujące metody dla wszystkich kontrolerów widoku, dla których chcesz zmodyfikować wygląd:
prefersStatusBarHidden
,preferredStatusBarStyle
,preferredStatusBarAnimation
,W twoim przypadku wystarczy wdrożyć
prefersStatusBarHidden
i zwrócićtrue
.Innym sposobem byłoby kontrolowanie wyglądu paska stanu na poziomie aplikacji. To wydaje się być tym, co faktycznie próbujesz zrobić (przez ustawienie
application.statusBarHidden
).Aby to zadziałało, musisz otworzyć
Info.plist
plik aplikacji, dodać kluczUIViewControllerBasedStatusBarAppearance
i nadać mu wartośćNO
.źródło
Sam to rozgryzłem. Dodam moje rozwiązanie jako inną opcję.
źródło
Okej, więc stało się to dla mnie problemem, ponieważ iOS 9 nie obsługuje żadnej z metod wymienionych powyżej, takich jak
UIApplication.sharedApplication().statusBarHidden = true
lubi
działa, ale nie zapewnia programowalnego rozwiązania, w którym mogę zmienić pod warunkiem. (
statusBarHidden = true
istatusBarHidden = false
jak już to zrobiliśmy wcześniej).Rozwiązanie tego szaleństwa:
Dodając polubienie
prefersStatusBarHidden()
poniżej, możesz programowo kontrolować ukrywanie i wyświetlanie paska stanu bez dodawaniaUIViewControllerBasedStatusBarAppearance
ustawień do swojej info.plist :następnie użyj go w ten sposób w całym kodzie:
LUB
źródło
prefersStatusBarHidden
dzwonienie ma jakiś sens? Myślę, że masz na myśliself.setNeedsStatusBarAppearanceUpdate()
poshowStatusBar
przydzieleniuWystarczy dodać, że podczas przesłonięcia
prefersStatusBarHidden
metody lub zmiennej,View controller-based status bar appearance
Info.plist musi mieć wartość TAK, w przeciwnym razie zastąpienie nie będzie miało wpływuźródło
w Swift 4.2 jest teraz własnością.
źródło
W moim przypadku szukałem paska stanu, aby ukryć / pokazać na żądanie; zamiast po prostu, gdy widok ładuje się lub znika.
szybki 3.x
źródło
Swift 5: W głównym kontrolerze widoku lub głównym kontrolerze nawigacji, jeśli masz,
I „Wyświetl wygląd paska stanu na kontrolerze” w liście musi być TAK, w przeciwnym razie powyższy kod nie zostanie wywołany.
Jeśli chcesz ukryć pasek stanu podczas uruchamiania aplikacji, „Pasek stanu jest początkowo ukryty” w liście musi być TAK. Może to zapobiec zniekształceniu obrazu uruchamiania, gdy na górze ekranu pojawi się dodatkowy niebieski pasek.
źródło
Rozwiązanie, które działa dla mnie; jeśli chcesz ukryć pasek stanu na określonym kontrolerze widoku podczas ładowania:
Uwaga: jeśli ustawisz klucz „ Wyświetl pasek stanu na kontrolerze ” na „ NIE ” w swoim info.plist, powyższy kod nie będzie działał. Powinieneś ustawić klucz na „ TAK ” lub usunąć go z info.plist
źródło
W projekcie Ogólne-> Informacje o wdrożeniu -> Styl paska stanu wybierz znacznik wyboru Ukryj pasek stanu Uwaga: - ukrywa pasek stanu w całej aplikacji
źródło
W przypadku Swift 4+ wypróbuj następujący kod (testowany w Swift 4.0, 4.1 - IOS 10, 11):
źródło
Swift 5+
W moim przypadku muszę zaktualizować pasek stanu ukryty na podstawie niektórych warunków.
Z tego powodu tworzę podstawowy kontroler,
BaseViewController
który zawiera nową właściwośćhideStatusBar
.Inne kontrolery widoku są podklasą tego kontrolera podstawowego. Wreszcie, gdy chcę zaktualizować zachowanie paska stanu, muszę tylko zmienić tę
hideStatusBar
wartość.Jak używać
Próbny
Oto wersja demonstracyjna, której używam,
UIView.animate(...)
aby przejście było płynniejsze.źródło
Używam Xcode 8.1 (8B62) z celem wdrożenia ustawionym na 10.1 i nie miałem szczęścia z wymienionymi powyżej opcjami przesłonięcia. Jednak sprawdzenie opcji „Ukryj pasek stanu” w informacjach o wdrożeniu pomogło mi.
Projekt> Ogólne
Mam nadzieję, że to pomoże.
źródło
Jeśli prezentujesz kontroler widoku modalnie, spróbuj
źródło
źródło
Możesz użyć tego kodu w swoim
ViewController
Class
scope
źródło
W swoim projekcie-> Ogólne-> Informacje o wdrożeniu
Styl paska stanu: -
właśnie zaznaczony Ukryj pasek stanu (iOS 10)
źródło
Szybki 4
źródło
Zaktualizowano dla iOS 13 i Swift 5
Jeśli żadna z powyższych odpowiedzi nie działa dla Ciebie. Sprawdź swoją listę, aby zobaczyć, czy masz to:
„Wyświetlanie wyglądu paska stanu opartego na kontrolerze”
Jeśli tak, koniecznie ustaw wartość TAK !!!!!
Następnie zadziała następujący kod.
źródło