2010-01-28 5 views
1

i ont un problème d'orientation iphone sdk ...iphone sdk sous-vue/problème d'orientation superview

i pousser un "holding" contrôleur de vue sur le NavigationController. Le composant holdingViewController utilise viewDidLoad pour afficher la barre de navigation navigationController et y ajouter un bouton de basculement et un sélecteur pour le bouton de basculement. il ajoute ensuite une sous-vue en utilisant UIViewAnimationTransitionNone montrant un UIView contenant un TableView. Lorsque le bouton de bascule est cliqué, le contrôleur de vue de maintien supprime la sous-vue chargée et la remplace par une autre sous-vue, contenant également une vue avec une vue de table, et se transforme en utilisant l'animation flip. Le problème vient quand renversant et changeant des orientations. Bien que le retournement et la rotation semblent fonctionner au premier coup d'œil en mode paysage, la vue inversée est en quelque sorte «recadrée» en largeur portrait, bien qu'affichée en mode paysage, la rotation ne la résout pas, il faut la retourner, la faire pivoter Retour au portrait, puis retournez à nouveau. Il semble que le holdingview n'enregistre le changement d'orientation, mais je sais qu'il est comme je l'ai mis en œuvre

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

sur les 3 contrôleurs de vue et je peux voir la fonction orientationChanged appelée pour chacun.

Les trois viewcontrollers mettent Autoresizing dans viewDidLoad

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

et je l'ai également mis en œuvre

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
return YES; 
} 

que quelqu'un a des idées sur ce qui se passe, ou plus important encore, ce que je peux faire pour répare le?

merci beaucoup

+1

Avez-vous trouvé une solution? Je suis confronté à un problème similaire – Linus

Répondre

3

moi avons eu un problème similaire avec l'ajout d'un sous-vue. La sous-vue était recadrée en orientation paysage. J'ai dû définir le cadre de la sous-vue avant de l'ajouter pour que la sous-vue se remplisse correctement.

Voici le code qui fixe mon problème: [subcontroller.view setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

+0

Ceci est la bonne réponse! J'ai un projet qui ajoute une vue créée en orientation paysage dans IB en tant que sous-vue d'une autre vue en mode paysage uniquement. Il a continué à venir «recadrée», mais dans la bonne orientation. En fait, tous les boutons et les étiquettes étaient dans la bonne position, juste l'arrière-plan de la vue était «recadrée». Redéfinir le cadre de la sous-vue avant de l'ajouter était la solution (et croyez-moi, j'ai tout essayé!) – mputnamtennessee