2010-08-29 4 views

Répondre

7

apparemment tout ce que je dois faire est de créer une vue basée app tour shouldAutoRotateToInterfaceOrientaion YES, et créer deux sous-classes UIViewController avec des fichiers xib individuels, puis ajoutez ceci au contrôleur de vue de l'application:

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

et ajoutez ce procédé dans la commande d'affichage de l'application ainsi:

-(void)orientationChanged { 
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; 
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) { 
     [[NSBundle mainBundle] loadNibNamed:@"Portrait" owner:self options:nil]; 
    } 
    else { 
     [[NSBundle mainBundle] loadNibNamed:@"Landscape" owner:self options:nil]; 
    } 

} 

et c'est tout, lorsque le dispositif est mis en rotation les charges automatique de XIB dans l'orientation correcte. Edit: vous devez également ajouter deux viewcontrollers par programme (@property et @synthesize aussi), et deux viewcontrollers dans le appviewcontroller.xib dans IB chacun avec le nom de classe correspondant à la sous-classe viewcontroller de chaque xib que vous avez créé. puis ajoutez une vue connectez-la au propriétaire du fichier et connectez les prises dans IB aux contrôleurs de vue que vous avez créés dans ib et cela devrait être tous

+0

cela fonctionne très bien pour un iPhone. iPad nécessitait des étapes supplémentaires: #define DegreesToRadians (x) ((x) * M_PI/180.0); (self.view.transform = CGAffineTransformMakeRotation (DegreesToRadians (180)) Au moins dans mon cas – TrekOnTV2017

+0

+1 A travaillé pour moi .. Merci .. :) – HDdeveloper

Questions connexes