2014-10-01 10 views
6

Ciao Ho un problema con la rotazione di un ViewController presentato in Modal in iOS8. Tutto questo funziona bene su iOS7 e versioni precedenti.iOS8 Modal ViewController Problema di rotazione

App Struct:

  • RootController (Orientamento supportato: Portrait)
  • modale Presentato ViewController (Orientamento supportato: Tutto)

mio problema è quando ho ruotare il dispositivo quando il controller modale is Presented la vista di Modal Controller non è stata ridimensionata al frame del lanscape.

Sembra così:

enter image description here I metodi di rotazione è stato chiamato e quando si imposta il telaio della vista Paesaggio manualmente l'interazione utente del lato destro (lato schermo grigio) non funzionava.

codice RootController:

codice
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait; 
} 

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

modale Controller:

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskAll; 
} 


- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
             duration:(NSTimeInterval)duration 
{ 
    if (self.presentingViewController != nil) { 
     [self.presentingViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation 
                     duration:duration]; 
    } 
} 

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration 
{ 
    if (self.presentingViewController != nil) { 
     [self.presentingViewController willRotateToInterfaceOrientation:toInterfaceOrientation 
                   duration:duration]; 
    } 
} 

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    if (self.presentingViewController != nil) { 
     [self.presentingViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; 
    } 
} 

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 
{ 
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; 

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) { 

    } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) { 

    }]; 
} 

Si può aiutarmi a risolvere questo problema per iOS 8.

+1

Hai impostato la procedura di autoresizingMask sugli elementi dell'interfaccia utente? – Jasper

risposta

1

Come si presenta il controller della vista modale? Perché stai inoltrando i metodi di rotazione da solo? Se fatto correttamente, questo dovrebbe essere gestito automaticamente e tutto ciò di cui hai bisogno sono i metodi -supportedInterfaceOrientations (e come note di Jasper, i limiti di autoresizingMask, o Auto Layout, devono essere corretti).

Problemi correlati