Position vom View verschieben, wegen Statusbar

G

gizzel

Neues Mitglied
Thread Starter
Dabei seit
22.07.2011
Beiträge
5
Reaktionspunkte
0
Hallo,
habe ein Programm erstellt, welches 3 Views hat, die ich durch Buttons aufrufe.
Der Wechsel erfolgt in folgender Methode:
Code:
- (void)my_switchView:(id)sender:(int)newViewToShow {               // Wechseln der Views
                                                                    // id  übergibt den View selbst
    [UIView beginAnimations:nil context:NULL];                      // int übergibt Auswahlwert für if-Abfrage
    [UIView setAnimationDuration:0.6];
  

    if (newViewToShow == 1) {
        if (!enterPositionViewController) {                         //wenn View noch nicht existiert, dann alloc init xib/nib
            EnterPositionViewController* newView = [[EnterPositionViewController alloc] initWithNibName:mad:"EnterPositionViewController" bundle:[NSBundle mainBundle]];   //Contr. aus Bundle holen. Wurde in @class defen.                                                      
            [self setEnterPositionViewController:newView];                      //Controller setzen
            [newView release];                                                 
        }
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window cache:YES];
        CGRect viewRect = self.window.frame;
        viewRect.origin = CGPointMake(0,20);
        enterPositionViewController.view.frame = viewRect;
        [[viewController view] removeFromSuperview];
        [window addSubview:[enterPositionViewController view]];
      
    }
 
    if (newViewToShow == 2) {
        if (!settingsViewController) {
          SettingsViewController* newView = [[SettingsViewController alloc]
                                             initWithNibName:mad:"SettingsViewController" bundle:[NSBundle mainBundle]];
            [self setSettingsViewController:newView];
            [newView release];
        }
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES];
        CGRect viewRect = self.window.frame;
        viewRect.origin = CGPointMake(0,20);
        settingsViewController.view.frame = viewRect;
        [[viewController view] removeFromSuperview];
        [window addSubview:[settingsViewController view]];
    }
   
    if (newViewToShow == 0) {                       //bei dem "Hauptbildschirm" erübrigt sich das nachfragen ob er existiert
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window cache:YES];
        [window addSubview:[viewController view]];
    }
  
     [UIView commitAnimations];
}
Problem: Wenn einer der zusätzlichen Views angezeigt (herein-animiert) wird, dann ist der View zuerst noch 20 Pixel zu hoch, wegen der Statusanzeige.
Das CGRect im Code oben verschiebt den View dann auf richtige Position.
Beim nächsten mal Anzeigen sitzt der View gleich richtig. Hat er sich ja gemerkt.

Frage: Wie bekomme ich das hin, das der View gleich beim Umblättern schon richtig sitzt? Sieht sonst echt nicht schön aus.


XCode-Project als Anlage dabei.
 
Zuletzt bearbeitet:
Bitte schreib hin, dass es ums iPhone geht, und benutze bitte Codetags.
Danke.
 
Zurück
Oben Unten