2010-11-17 4 views
0

J'ai réussi à détecter manuellement la rotation et à définir mes propres effets de rotation entre deux UIViewControllers. Quand dans la première, la rotation vers le paysage invite la seconde à être poussée avec une animation manuelle. La barre d'état passe à l'orientation correcte. Cependant, la vue chargée par le second UIViewController n'est pas dans la position que je l'attendais. Au lieu de cela, il y a une marge sur la gauche où se trouvait auparavant la barre d'état et une marge/espace en bas que je m'attendais à remplir par la vue.Rotation manuelle de l'iPhone mal positionnée

How the rotation appears

(Cliquez pour agrandir. La boîte orange est simplement référence où 0,0 est dans la rotation UIView, CustomView)

Le code que je utilise dans mon contrôleur de vue de faire la rotation est:

-(void)loadView { 
    CustomView *customView = [[CustomView alloc] initWithFrame:CGRectMake(0, 20, 480, 300)]; 
    self.view = customView; 

    CGAffineTransform rotate = CGAffineTransformMakeRotation(degreesToRadian(90)); 
    [self.view setTransform:rotate]; 

    [customView release]; 
} 

Toute aide serait grandement appréciée!

EDIT Géré pour résoudre après une variété d'approches d'essais et d'erreurs - réponse fournie ci-dessous. Peut-être y a-t-il une solution plus élégante/plus évidente - si c'est le cas, n'hésitez pas à fournir!

Répondre

0

j'ai réussi à résoudre ce problème en fixant les limites de la Vue après la transformation:

self.view.bounds = CGRectMake(20, -20, 480, 300); 
0

essayez-les sur les viewcontrollers. J'ai résolu le problème du clip de 20 pixels (hauteur de la barre d'état) lorsque les sous-vues en plein écran s'affichaient.

[viewcontroller1.view setCenter: CGPointMake (viewcontroller1.view.center.x, viewcontroller1.view.center.y-20)];

et/ou

[viewcontroller2.view setCenter: CGPointMake (viewcontroller2.view.center.x-20, viewcontroller2.view.center.y)];

Questions connexes