2008-12-17 11 views

Odpowiedz

23

W powyższym zrzucie ekranu, jest półprzezroczysty pasek stanu i półprzezroczysty pasek nawigacyjny.

Pasek stanu jest ustawiany za pomocą

[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent]; 

Pasek nawigacji odbywa się za pomocą

theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
+0

Jak ukryć paski na górze i na dole, jeśli jest to uiwebview w kontroler widoku? – thndrkiss

+1

To nie działa dla mnie na iPhone Simulator 3.2. Z dokumentacji Xcode: "Przestarzałe. Użyj" UIBarStyleBlack "i zamiast tego ustaw właściwość półprzezroczystości na" TAK "." To się udało! :) – ma11hew28

+0

Kiedy to zostało napisane (grudzień 2008), to był właściwy sposób.Oczywiście z upływem czasu interfejs API się zmienia. Twoja metoda jest teraz poprawna. – August

0

Ustawia styl statusu, którą czarnej prześwitującej i pasek nawigacji stylu jak czarny przezroczyste. Jeśli używasz aplikacji opartej na nawigacji, w sprawdzeniu MainWindow.xib pasek stanu jest ukryty, a pasek nawigacji jest ukryty.

Gdy użytkownik dotknie ekranu, uruchom zegar, aby sprawdzić, czy było to jedno dotknięcie, czy podwójne dotknięcie. Jeśli klikniesz jeden raz, ustaw pasek stanu i ukryj navbar = NIE. a gdy aktywność użytkownika zostanie zatrzymana, uruchom ponownie zegar. po pewnym czasie bezczynności, spraw, by znów były ukryte.

4

Najlepszym sposobem, w jaki się pojawiłem, było to: podczas korzystania z "złożonej" hierarchii paska zakładek zawierającego kontrolery nawigacyjne, z jednym widokiem "szczegółowym" będącym widokiem pełnoekranowym.

W delegata aplikacji tuż przed wyświetlić kartę Pasek kontrolera jest dodawana do okna, dodałem to:

tabBarController.view.frame = [[UIScreen mainScreen] bounds]; 

To spowoduje, że kontroler pasek kart pokryć cały ekran, nawet poniżej obszaru pasek stanu. Musiałem zrównoważyć wysokości kilku widoków do + 20 pikseli, w szczególności do pasków nawigacyjnych.

+0

Biorąc pod uwagę sytuację O/P, nie mam wątpliwości, że to rozwiązanie działa. Jednak to rozwiązanie nie jest zbyt ogólne. Jeśli tabBarController.view jest podziałem widoku, który nie jest widokiem pełnoekranowym, to rozwiązanie nie będzie działać. Lub parafraza, granice rect ma (0,0), jak jego pochodzenie, więc twój tabBarController.view będzie miał punkt początkowy tego samego pochodzenia super widoku. – SooDesuNe

45

Po prostu ustaw "chce układ pełnoekranowy" w kontrolerze widoku. To rozwiązuje problem dla mnie.

self.wantsFullScreenLayout = YES; 
+0

Wygląda na to, że jest to najprostsze i najskuteczniejsze rozwiązanie. –

+3

Ustaw w podklasie UIViewController z: self.wantsFullScreenLayout = YES; – petert

+13

Nie działa dla mnie (przy użyciu UINavigationController). Musiałem ustawić self.navigationController.navigationBar.translucent = YES również. – bentford

14

Jeśli masz kontroler widok wewnątrz kontrolera nawigacji, i chcesz, aby ukryć pasek stanu, aby mieć swój pogląd viewController w pełnym ekranie, zawsze można zadzwonić:

[self.navigationController.view setNeedsLayout]; 

po ukrywanie paska stanu. Ale ja osobiście uważam, że

[self setWantsFullScreenLayout:YES]; 

to lepszy sposób.

+0

Możesz również ustawić właściwości 'barStyle',' isTranslucent' i 'backgroundColor' paska nawigacji, jeśli chcesz dopasować powyższe zdjęcie. – zekel

0

krok 1 Ustaw UIViewControllerBasedStatusBarAppearance do NO w plist

Następnie dodaj następujący kod w opcji uruchomi wykończenie zrobił

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 

    [application setStatusBarStyle:UIStatusBarStyleLightContent]; 

    self.window.clipsToBounds =YES; 

    self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20); 
} 

Proszę śledzić ten kod pracował dla mnie

Powiązane problemy