2010-11-25 5 views
0

J'ai une sous-vue dans le contrôleur de navigation, lorsque le simulateur d'ipad tourne pour être portrait ou paysage, la vue principale est autorotate s'adapter dans l'orientation ipad, mais la sous-vue ne l'est pas. la sous-vue est également en rotation, mais ne correspond pas à l'orientation de l'ipad, l'orientation de la sous-vue est toujours paysage vers le bouton d'accueil de l'ipad. Ma question est, comment faire la sous-vue autorotate et avoir l'orientation comme l'orientation de la vue principale?comment autorotate une sous-vue dans le contrôleur de navigation

peut un corps me aider, s'il vous plaît ...

Répondre

6

J'ai résolu ce problème.

utiliser la fonction NSNotification dans la classe de sous-vue viewController, dans la méthode viewWillAppear, ceci est ma mise en œuvre:

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(deviceRotated:) 
name:UIDeviceOrientationDidChangeNotification 
object:[UIDevice currentDevice]]; 

puis, voici la méthode deviceRotated:

-(void)deviceRotated:(id)sender{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation]; 
    if (orientation == UIDeviceOrientationPortrait) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (0.0); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(0, 30); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 

    } 
    else if (orientation == UIDeviceOrientationPortraitUpsideDown) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (M_PI * 180/180.0f); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(-63, -100); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 

    }else if (orientation == UIDeviceOrientationLandscapeLeft) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (M_PI * 90/180.0f); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(60, -180); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 


    }else if (orientation == UIDeviceOrientationLandscapeRight) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (M_PI * 270/180.0f); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(-60, -140); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 

    } 
} 

Enfin, le problème est résolu. Et this est le lien qui m'aide.

Questions connexes