2013-09-27 30 views
9

Jestem zainteresowany implementacją menu po lewej stronie w mojej aplikacji Użyłem do tego NVSlideMenuController. i działa dobrze.chce zaimplementować przesuwne menu boczne z przesuwanym paskiem stanu. w iOS

Ale chcę go zmodyfikować. Chcę przesunąć pasek stanu za pomocą contentViewController i nie chcę paska stanu w MenuViewController.

obecnie będzie wyglądać poniżej obrazu

enter image description here

i chcę sama jak pod obrazem

enter image description here

z góry dzięki

+1

Ruchomy pasek stanu może być „przeniesiony” w rzeczywistości, ale tylko przez jakiś manipulacji. Zobacz [this SO post] (http://stackoverflow.com/a/19011013/2740693) –

+1

możliwy duplikat [paska stanu ruchomego w iOS 7] (http://stackoverflow.com/questions/19007694/moving-status- bar-in-ios-7) – codercat

Odpowiedz

11

można spróbować wyłączyć 3G na drugim obrazie, można zauważyć, że pasek stanu nie aktualizuje.

wydaje się nowego API w iOS7

[[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO]; 

To może być to samo pytanie, które zadajesz, i istnieje wersja demo, aby pokazać, co chcesz.

Moving status bar in iOS 7

1

Nie zamierzamy być w stanie przenieść pasek stanu. Najlepiej można zrobić, to schować go do tego kontrolera widoku:

- (void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    if (animated) 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
    } 
    else 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    } 
} 

- (void) viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    if (animated) 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; 
    } 
    else 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    } 
} 

Spróbuj zabawy z różnymi wartościami UIStatusBarAnimation aby zobaczyć, co wygląda najlepiej. Istnieją trzy wartości: UIStatusBarAnimationNone, UIStatusBarAnimationFade i UIStatusBarAnimationSlide`.

+0

Widziałeś aplikację skrzynki pocztowej, w której pasek statusu przesuwa się podczas otwierania lewego menu. i chcę tego samego. – Pratik

+0

Na UIApplication istnieje właściwość o nazwie statusBarFrame ([[UIApplication sharedApplication] .statusBarFrame). Możesz spróbować renderować to do kontekstu obrazu CG i tworzyć widok obrazu z tym obrazem, a następnie ukrywać pasek stanu i przesuwać widok obrazu.To "podrobi" pasek stanu w ruchu, ale nie wyświetli treści dynamicznej. – paulrehkugler

+0

Lub możesz spróbować hitTest: -ing, aby spróbować uzyskać widok paska stanu. Jest to coś, czego Apple prawdopodobnie nie chce, więc będzie to trudne. – paulrehkugler

2

Możesz być w stanie to zrobić przez łańcuchowym klatkę keyWindow (można dostać to z [[UIApplication sharedApplication] keyWindow] (UIWindow jest podklasą UIView). Należy przenieść wszystko w porządku, a może trzeba dokonać innego UIWindow przynieść inne rzeczy na od lewej.

0

To nie jest odpowiedź, ale odpowiedź na odpowiedź Jamesa ponieważ przerwach formatowania w komentarzu.

Faktem jest, że ustawienie ramki keyWindow nie będzie w stanie przesunąć paska stanu. Ustawiając punkt przerwania i wypisując opis rekurencyjny keyWindow, zauważymy, że wewnątrz nie ma informacji o pasku stanu.

(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription] 
<UIWindow: 0x8c5bf80; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x8c5c500>; layer = <UIWindowLayer: 0x8c5c0a0>> 
    | <UIView: 0x8b49700; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x8b496b0>> 
(lldb) 

Obserwuj Chris's link Simon's odpowiedź spełnia swoje zadanie