J'ai ce code dans une UIViewController
sous-classe:Vue ne tourne pas correctement
- (id)init {
self = [super init];
if (self) {
self.view.frame = [PDToolbox screenFrame];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.view.backgroundColor = [UIColor redColor];
}
return self;
}
La seule chose que j'ai en termes de toutes les méthodes de rotation est la suivante:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
Cependant, après l'écran est tourné à paysage, faire un NSLog sur la vue montre cela:
<UIView: 0x10061640; frame = (0 0; 320 480); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x10061670>>
Je ne comprends pas pourquoi c'est en train de faire cette transformation, et pas seulement de tourner comme d'habitude? Cela signifie que toutes les vues que je place sur le dessus après la rotation et définie pour être la taille de la vue finissent à une position 320x480.
EDIT:
Les personnes ne comprennent pas. Donc, je mets une vue sur le dessus de celui-ci, la même taille que le UIView, en utilisant:
UIView *anotherView = [UIView alloc] initWithFrame:controller.view.bounds];
[controller.view addSubview:anotherView];
Si j'ajoute anotherView dans en mode portrait, anotherView apparaît en mode portrait, avec le cadre 320x480. Si j'ajoute une autre vue dans le paysage, une autre vue apparaît dans le paysage, mais toujours avec le cadre 320x480, parce que c'est ce que le cadre de controller.view est encore, pour une raison inconnue. À quoi ressemble votre hiérarchie de vues/contrôleurs?
Pourriez-vous simplement poster un code complet de votre UIViewCOntroller –
@ R.A Sure. Je viens de le faire. – Andrew
En fait, je ne comprends pas votre problème..Qu'est-ce que vous entendez par là? "Vues je place sur le dessus après la rotation et définie pour être la taille de la vue finissent à une position 320x480" –