Question

Je l'ai regardé à chaque question à ce jour et ne semblent répondre à cette question en fait.

J'ai créé un UITabBarController ajouté plusieurs contrôleurs et vue à elle. La plupart des vues sont vues en mode portrait, mais on doit être considérée dans le paysage. Je ne veux pas utiliser l'accéléromètre ou de détecter lorsque l'utilisateur fait pivoter l'appareil, je veux juste afficher la vue en mode paysage quand ils choisissent ce point de vue de l'onglet en bas.

Je veux que les animations régulières de se produire, tels que l'onglet décrochage, le point de vue de rotation, etc., quand ils choisissent cet élément, et le contraire se produise quand ils choisissent un point de vue différent.

est-il pas une propriété intégrée ou une méthode pour indiquer au système quelle orientation pour afficher la vue comme?

Outrepasser la shouldautorotate ... méthode ne fait rien pour autant que je peux dire.

Le type de réponse que je ne serais pas apprécier est « RTFM » parce que je l'ai déjà, et tout le monde qui a développé pour l'iPhone si loin sait qu'il ya

est très peu utile pour M F-ing R.
Était-ce utile?

La solution

poster sur un forum qui pourrait aider. Réponse courte est que vous devez tourner manuellement votre point de vue ou d'un contrôleur, une fois la vue a été établi, dans le viewWillAppear: méthode

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));
landscapeTransform = CGAffineTransformTranslate (landscapeTransform, +80.0, +100.0);

[[appDelegate navController].view setTransform:landscapeTransform];

Autres conseils

Voici ce que je fais faire ceci:

Tout d'abord, mettre cette définition en haut de votre dossier, sous vos #imports:

#define degreesToRadian(x) (M_PI * (x) / 180.0)

puis, dans la viewWillAppear: méthode

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];     
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {  
    self.view.transform = CGAffineTransformIdentity;
    self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
    self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}

si vous voulez que d'être animé, vous pouvez envelopper le tout dans un bloc d'animation, comme suit:

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];     
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {  
    self.view.transform = CGAffineTransformIdentity;
    self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
    self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}
[UIView commitAnimations];

Remplacer la méthode d'orientation dans votre classe de contrôleur et le forcer à paysage comme celui-ci:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
    // Overriden to allow any orientation.
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

Simple et efficace!

shouldAutorotateToInterfaceOrientation ne fonctionne que si tout le point de vue dans le tabbarcontroller ou tous les contrôleurs de vue dans le NavigationController d'accord lors d'une rotation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top