Nie można ukryć paska stanu w iOS7

[2]}właśnie uaktualniłem mojego iPhone ' a 5 iOS 7 do czterech wersji beta. Teraz, gdy uruchamiam moją aplikację z Xcode 5 na tym iPhonie, pasek stanu nie ukrywa się, mimo że powinien.

Nie Działa:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

Nie Działa:

[UIApplication sharedApplication].statusBarHidden = YES;

Nie można zalogować się na forach programistów Apple

Author: Brian, 2013-08-05

25 answers

W pliku plist aplikacji Dodaj wiersz nazwij go "wygląd paska stanu na podstawie kontrolera" i ustaw go na NO

Zauważ, że to po prostu nie działa, jeśli używasz UIImagePickerController w aplikacji.

Od http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/, rozwiązanie mgiroux

Przykład dodawania kontrolera View Base do ustawień informacji w Xcode

 556
Author: satgi,
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-04-09 09:17:16

Dodaj metodę do kontrolera widoku.

- (BOOL)prefersStatusBarHidden {
    return YES;
}
 278
Author: invoodoo,
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
2013-10-16 23:07:59

W Pliście dodaj następujące właściwości.

-> Status bar is initially hidden = TAK

-> View controller-based status bar appearance = NIE

Dodaj oba-teraz pasek stanu zniknie.

 84
Author: user1179912,
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
2013-10-16 23:07:10

Aby ukryć pasek stanu w jednym widoku, należy użyć:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

Na początku mi to nie działało, a potem piła w dokumentacji tej metody, która mówi: // Ustawienie statusBarHidden nie robi nic, jeśli aplikacja używa domyślnego systemu paska stanu opartego na UIViewController.

Należy to zrobić w pliku plist, dodając klucz {[1] } ustawiony na NO. I wtedy zadziałało.

 53
Author: Debora Fortini,
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
2013-10-16 22:52:49

Aby ukryć pasek stanu w iOS7 potrzebujesz 2 linijek kodu

  1. Inapplication: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions write

    [application setStatusBarHidden:YES];
    
  2. W info.plist add this

    View-Controller Based Status Bar Appearance = NO
    
 16
Author: Shaik Riyaz,
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-05-14 06:15:15

Aby użyć starszej metody UIApplication, aby ukryć / pokazać pasek stanu, aplikacja musi ustawić wartość plist dla iOS 7:

View-Controller Based Status Bar Appearance = NO

Wartość ta jest domyślnie ustawiona na YES. Jeśli zmienisz go na nie, możesz użyć starszych metod. Jeśli pozostawisz ustawienie tak, nadal możesz ukryć pasek stanu, ale do każdej podklasy kontrolera widoku w Twojej aplikacji należy nadpisanie: prefersStatusBarHidden, aby zwrócić Yes.

Za każdym razem, gdy aplikacja wymaga zmiany wyglądu lub widoczności paska stanu, oraz Wygląd paska stanu w widoku kontrolera jest ustawiony na tak, zewnętrzny kontroler widoku musi wywołać:

setNeedsStatusBarAppearanceUpdateAnimation

 15
Author: jaredsinclair,
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
2013-09-17 17:22:14

Jest tak wiele kombinacji sugerowanych dla tego problemu, ale problem polega na tym, że iOS 6 i 7 używają różnych metod, aby ukryć pasek stanu. Nigdy nie udało mi się ustawić ustawień plist, aby włączyć zachowanie w stylu iOS6 na iOS 7, ale jeśli budujesz aplikację do obsługi iOS 6+, musisz użyć 3 metod jednocześnie, aby upewnić się, że dany kontroler widoku ukrywa pasek stanu: {]}

// for ios 7 
- (BOOL)prefersStatusBarHidden{
    return YES;
}

// for ios 6
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // explicitly set the bar to show or it will remain hidden for other view controllers
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

Powinno to działać niezależnie od ustawień plist.

 11
Author: SaltyNuts,
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-04-08 17:37:48

Musiałem wykonać obie zmiany poniżej, aby ukryć pasek stanu:

Dodaj ten kod do kontrolera widoku, w którym chcesz ukryć pasek stanu:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

Dodaj to do swojego .plik plist (przejdź do 'info' w ustawieniach aplikacji)

View controller-based status bar appearance --- NO

Następnie możesz wywołać tę linię, aby ukryć pasek stanu:

[[UIApplication sharedApplication] setStatusBarHidden:YES];
 7
Author: Peter Y,
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
2013-12-30 01:50:27

Wystarczy dodać te 2 linijki w info.plik plist. Spowoduje to poprawkę dla iOS7 i starszej wersji.

  • pasek stanu jest początkowo ukryty = tak
  • Wyświetl pasek stanu oparty na kontrolerze appearance = NO

Przejdź do projektu i wybierz cele - > ogólne i zobacz " Styl paska stanu ...Ukryj podczas uruchamiania aplikacji " pole wyboru zostanie zaznaczone. To zadziała.

 6
Author: Sid,
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-01-11 05:25:52

Spróbuj tej prostej metody:

- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
 6
Author: svmrajesh,
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-01-21 12:26:28

Jedyną rzeczą, która mi pomogła, jest dodanie następującego w pliście

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
 4
Author: bartburkhardt,
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
2013-10-15 19:45:12

Najprostszą metodą, jaką znalazłem, aby ukryć pasek stanu w całej aplikacji, jest utworzenie category na UIViewController i nadpisanie prefersStatusBarHidden. W ten sposób nie trzeba zapisywać tej metody w każdym kontrolerze widoku.

UIViewController+HideStatusBar.h

#import <UIKit/UIKit.h>

@interface UIViewController (HideStatusBar)

@end

UIViewController+HideStatusBar.m

#import "UIViewController+HideStatusBar.h"

@implementation UIViewController (HideStatusBar)

//Pragma Marks suppress compiler warning in LLVM. 
//Technically, you shouldn't override methods by using a category, 
//but I feel that in this case it won't hurt so long as you truly 
//want every view controller to hide the status bar. 
//Other opinions on this are definitely welcome

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

#pragma clang diagnostic pop


@end
 4
Author: mike,
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-07-14 11:47:20

-(BOOL)prefersStatusBarHidden { return YES; }

 3
Author: Thunderbird,
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
2013-10-09 10:24:23
  1. In plist add - - - -

    Wygląd paska stanu opartego na kontrolerze - - - nie

  2. W każdym viewcontrollerze napisz

    - (void) viewDidLayoutSubviews
    {
        CGRect viewBounds = self.view.bounds;
        CGFloat topBarOffset = 20.0;
        viewBounds.origin.y = -topBarOffset;
        self.view.bounds = viewBounds;
    
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
    }
    
[3]} dla problemu z paskiem stanu w iOS 7, ale docelowy powinien być 5.1 i powyżej dla aplikacji
 3
Author: Maulik,
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
2013-10-30 09:48:08

Kroki ukrywania paska stanu w systemie iOS 7:

1.Przejdź do informacji o aplikacji.plik plist.

2.I ustaw, wyświetl wygląd paska stanu opartego na kontrolerze: Boolean NO

Mam nadzieję, że rozwiązałem problem z paskiem stanu.....

 3
Author: chandrika,
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-01-30 11:48:31

Dla systemu iOS 7 w jednym widoku użyj metody viewWillappear:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

Do wyświetlenia paska stanu użyj:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
 3
Author: oscar castellon,
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-07-14 05:39:19

W pliku Info Plist Dodaj wiersz dla następującej właściwości

Nazwa właściwości: wyświetl wygląd paska stanu opartego na kontrolerze

Value: NO

 2
Author: user842553,
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
2013-10-09 11:33:55

Wiele odpowiedzi w tym wątku działa, ale rozumiem, że jeśli próbujesz zrobić coś dynamicznego, musisz w końcu zadzwonić:

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
 2
Author: darkheartfelt,
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
2013-12-01 01:49:42

Spróbuj dodać następującą metodę do kontrolera widoku głównego aplikacji:

- (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
 1
Author: BHUPI,
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
2013-09-25 12:03:53

Próbowałem wszystkich tych opcji zamieszczonych tutaj w moim projekcie i nie zadziałały. Pomyślałem, że może to mieć związek z tym, że zaktualizowałem mój Xcode, a następnie aplikację do iOS 7 i niektóre ustawienia gdzieś się pomieszały. Postanowiłem zbudować dla niego zupełnie nowy projekt i po prostym ustawieniu: "Status bar is initially hidden = YES " i " View controller-based status bar appearance = NO", jak stwierdziło wielu innych, działał poprawnie (tzn. bez paska stanu).

Więc moja rada, jeśli pracujesz nad projektem, który został zaktualizowany do iOS 7 ze starej wersji i wypróbowałem wszystkie inne opcje, aby zbudować nowy projekt.
 1
Author: user1529408,
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-07-14 11:36:31

Możesz sprawdzić ten kod , pod UIViewController+ODStatusBar

 0
Author: Alex Nazaroff,
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-06-26 10:24:38

Dla Swift 2.0+ IOS 9

override func prefersStatusBarHidden() -> Bool {
return true
}
 0
Author: Irshad Qureshi,
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-08 09:19:58

Aby ukryć pasek stanu dla określonego kontrolera viewController

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Do Ustawienia paska stanu ukrytego dla aplikacji:

  • Ustaw View controller-based status bar appearancena NO w .plist i w zestawie application: didFinishLaunchingWithOptions: : [application setStatusBarHidden:YES];

    Uwaga: setStatusBarHidden: deprecated

Lub

  • W Ustawieniach projektu - > zakładka Ogólne - > informacje o wdrożeniu

    Zaznacz Hide Status bar pole.

 0
Author: Lal Krishna,
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-03-21 11:49:09
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
application.statusBarHidden = YES;
return YES;
}
 -1
Author: Evan Ische,
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-09-07 15:37:36

Nie jestem pewien, dlaczego "nie możesz zalogować się na forach programistów Apple", ale (bez naruszania NDA) możesz również ukryć swój pasek stanu za pomocą Xcode. To Ogólne ustawienie celu aplikacji. Tutaj wpisz opis obrazka

 -7
Author: Jake,
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
2013-08-05 13:45:24