StatusBar aus- & einblenden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • StatusBar aus- & einblenden

    osxentwicklerforum.de/index.ph…1ec4a767f300e9da167df9468Huhu,
    die Frage ist für Profis sicher ein Klacks.
    Ich habe einen View und öffne von dem aus einen weiteren View per:

    Quellcode

    1. SecondViewController *controller = [SecondViewController alloc] init];
    2. [self.navigationController pushViewController:controller animated:TRUE];
    3. [controller release];


    In diesem View setze ich die die Statusbar in der ViewDidLoad auf hidden:

    Quellcode

    1. [[UIApplication sharedApplication] setStatusBarHidden:TRUE];


    Nun schließe ich den ViewController wieder per:

    Quellcode

    1. [[UIApplication sharedApplication] setStatusBarHidden:FALSE];
    2. [self.navigationController popViewControllerAnimated:TRUE];


    Leider sieht der erste View nun nicht mehr so aus wie am Anfang (siehe ScreenShot).

    Wie kann ich das Problem vermeiden ?


    Lieben Dank schonmal jetzt !!! :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tobitoday ()

  • Evtl. reicht es schon, wenn du die beiden letzten Zeilen vertauschst, also die Status Bar _nach_ dem pop wieder sichtbar setzst.

    NB: TRUE und FALSE funktionieren zwar, echte Objective-C-ler nutzen aber YES und NO. :) ;)
    Widgetschmie.de • Life is too short for gadgets
  • Ich hatte bei einem ähnlichen Problem (in-call status bar) bemerkt, dass wenn ich gleich wenn ich den obersten view ins Fenster einhänge noch den Frame setze, das Resizing dann seltsamerweise korrekt funktioniert. Probier mal folgendes in der application:didFinishLaunchingWithOptions:

    Quellcode

    1. ...
    2. mainController.view.frame = [[UIScreen mainScreen] applicationFrame];
    3. [window addSubview:mainController.view];


    Warum das einen Unterschied macht hab ich mir nicht wirklich angeschaut, das Erst-Ergebnis ist exakt dasselbe, der view des mainController nimmt die ganze (- Status Bar) Grösse ein, aber nur mit der zusätzlichen Zeile passt der die Grösse bei Status-Bar Änderungen wieder richtig an. Kann sein dass da bei meinem Projekt wo ich das eingebaut habe was anderes falsch lief, keine Ahnung. Probiers aber mal.
    Widgetschmie.de • Life is too short for gadgets
  • Unglaublich aber wahr, es hat funktioniert :)
    Nur leider hab ich nun in den Views wo keine StatusBar angezeigt wird den unbeliebten, weißen Streifen.
    Weder mit umherschieben im IB noch mit

    self.view.frame = [[UIScreen mainScreen] applicationFrame];
    oder
    [self.view setFrame:CGRectMake(100, 100, 0, -30)];

    findet irgendeine Veränderung statt.

    Alles garnicht so einfach :))
  • Das Autoresizing des Statusbar-lonen Views hast du gesetzt? Es müsste eigentlich automatisch klappen, sonst kannst du auch mal noch [[UIScreen mainScreen] bounds] probieren. Etwas unschön, aber wenns nicht anders geht... :)
    Widgetschmie.de • Life is too short for gadgets
  • Danke für deine Mühe :)
    Meine Resizing-Einstellungen hab ich gesetzt wie im Anhang.
    In der viewDidLoad alles mit frame & bounds ausprobiert .... es erscheint immernoch der weiße Balken.

    Es sieht so aus als würde der Balken immer nachträglich drübergelegt, egal wie ich schiebe. Der Balken bleibt :(
  • hmm .. irgendwie ergibt das für mich keinen Sinn.

    Bounds und Frame sind die ganze Zeit 320x480 groß und beginnen bei 0, 0
    Trotzdem der weiße Streifen über dem View.

    Der View wird auch nicht 20 pixel nach unten geschoben, sondern der weiße Streifen liegt einfach drüber.

    Hab jetzt schon mehrere Varianten durchprobiert, alle Views, Frame & Bounds = [UIScreen mainScreen] bounds] gesetzt.
    Auch den NavigationController und und und .... keine Wirkung ...
  • ja, in der viewDidLoad mit self.wantsFullScreenLayout = YES;
    Aber geändert hat es leider nichts :(
    Boar ich werd verrückt ... dat gibbet doch garnich .... ich geb jetz einfach mal den Quelltext raus , irgendwo muss ja nen Haken sein

    Im AppDelegate:

    Quellcode

    1. tabBarController.view.frame = [[UIScreen mainScreen] applicationFrame];
    2. [window insertSubview:tabBarController.view belowSubview:splashView];


    Also ich pushe den AVCamRecorder hier:

    Quellcode

    1. [[UIApplication sharedApplication] setStatusBarHidden:TRUE];
    2. [self.navigationController setNavigationBarHidden:TRUE animated:TRUE];
    3. AVCamDemoViewController *controller = [[AVCamDemoViewController alloc] init];
    4. // [[self.navigationController view] setFrame: [[UIScreen mainScreen] bounds]];
    5. // [[self.tabBarController view] setBounds:[[UIScreen mainScreen] bounds]];
    6. // [[self.tabBarController view] setFrame: [[UIScreen mainScreen] bounds]];
    7. // [self.navigationController setHidesBottomBarWhenPushed:TRUE];
    8. // controller.wantsFullScreenLayout = YES;
    9. [self.navigationController pushViewController:controller animated:TRUE];
    10. [controller release];
    11. break;
    Alles anzeigen


    Die AVCamRecorder viewDidLoad:

    Quellcode

    1. - (void)viewDidLoad
    2. {
    3. appDelegate = (ReiseTageBuchAppDelegate *)[[UIApplication sharedApplication] delegate];
    4. //[[UIApplication sharedApplication] setStatusBarHidden:YES];
    5. //self.wantsFullScreenLayout = YES;
    6. //self.navigationController.wantsFullScreenLayout = YES;
    7. //self.tabBarController.wantsFullScreenLayout = YES;
    8. //self.tabBarController.view.window.rootViewController.wantsFullScreenLayout = YES;
    9. //self.navigationController.visibleViewController.wantsFullScreenLayout = YES;
    10. // self.tabBarController.view.frame = [[UIScreen mainScreen] applicationFrame];
    11. //self.view.frame = [[UIScreen mainScreen] bounds];
    12. //self.view.bounds = [[UIScreen mainScreen] bounds];
    Alles anzeigen



    So gehe ich wieder zurück zum "UrsprungsView":

    Quellcode

    1. [self.navigationController setNavigationBarHidden:FALSE animated:TRUE];
    2. [self.navigationController popViewControllerAnimated:TRUE];
    3. [[UIApplication sharedApplication] setStatusBarHidden:FALSE];


    Die ganze Zeit sind die Bounds und Frames 320x480 und Origin 0,0 also eigentlich richtig.
    Nur immernoch dieser verdammte weiße Streifen .. AHHHH :D

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von tobitoday ()