iOS 6 l'orientation portrait ou paysage
J'ai une table avec une grande liste de choses qui vient à partir d'un fichier plist et en cliquant sur chacun d'entre eux vous emmène à un nouveau point de vue, un xib.
J'ai 2 points de vue à l'intérieur .xib, un portrait et un paysage
Dans mon h fichier j'ai ceci:
IBOutlet UIView *portraitView;
IBOutlet UIView *landscapeView;
@property (nonatomic, retain) IBOutlet UIView *portraitView;
@property (nonatomic, retain) IBOutlet UIView *landscapeView;
Dans ma m fichier présent:
[super viewDidLoad];
//Do any additional setup after loading the view from its nib.
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
}
- (void) orientationChanged:(id)object
{
UIInterfaceOrientation interfaceOrientation = [[object object] orientation];
if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
self.view = self.portraitView;
}
else
{
self.view = self.landscapeView;
}
}
- (void)viewDidUnload
{
[super viewDidUnload];
//Release any retained subviews of the main view.
//e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
self.view = portraitView;
} else if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
self.view = landscapeView;
}
return YES;
}
@end
Tout fonctionnait parfaitement sous iOS 5, montrant un paysage ou portrait en cas de besoin.
Maintenant avec la mise à jour iOS 6 tout est un gâchis.
Si je suis dans la table (portrait) et cliquez sur un élément, il montre correcte dans le portrait, si je tourne le paysage, la vue montre la vue correcte, MAIS le fait d'être dans le paysage, si je retourne à la table et de sélectionner un autre article, il montre le portrait au lieu de paysage.
Si je fais la même chose mais à partir du paysage, il montre le portrait.
Donc, maintenant, l'orientation n'est pas travailler pour rien.
La même chose arrive à mes autres points de vue à l'aide de storyboard. Ils sont le portrait et toujours montré comme ça, maintenant ils tournent, réduire le tout et laisser mon application que les ordures.
1 - Comment puis-je corriger l' .xib orientation chose ?
2 - Comment puis-je résoudre le storyboard de l'orientation ? (ils étaient statiques, maintenant tout tourne (pas de code))
Grâce.
OriginalL'auteur Peter | 2012-09-24
Vous devez vous connecter pour publier un commentaire.
Je pense que j'ai un travail autour de. C'est moche mais ça fonctionne...
Avec iOS6 Apple suggèrent maintenant d'utiliser 2 différences fichier XIB pour basculer entre les modes portrait & mode paysage.
Mais si vous souhaitez utiliser la méthode précédente a permis d'iOS 5.0 par "commutation" entre 2 UIView IBOutlet, vous pouvez essayer mon laid solution de travail. L'idée est de faire pivoter l'affichage en fonction de l'orientation.
1) En vous viewDidLoad, abonnez-vous à l'orientation de la notification:
2) Ajouter une méthode appelée par la notification:
3) enfin, ajoutez la méthode de la rotation pour chaque orientation:
Je vous propose de personnaliser un UIViewController de classe et d'héritage mangé de cette classe pour enregistrer le code redondant.
Si vous souhaitez soutenir à la fois la solution pour ios5 et ios6, vous pouvez utiliser un #endif macro afin d'inclure le code dans vos contrôleurs.
Acclamations
OriginalL'auteur Xavier Zeppetella
Pas besoin d'envoyer et de recevoir des notifications:
Dans votre appdelegate.m la méthode suivante
est toujours appelé pour vérifier la fenêtre de l'orientation,
donc un moyen simple de contourner est d'avoir le décrit ci-dessous de code dans votre appdelegate.m
et de mettre en œuvre
dans cette vue, les contrôleurs de
et pour effectuer l'action soudaine contre les changements d'orientation, de mettre en œuvre la méthode suivante
OriginalL'auteur yunas
C'est un peu tard pour une réponse, je pensais que je devrais partager cela avec vous, juste au cas où,
J'ai eu le même problème.
shouldAutorotateToInterfaceOrientation est obsolète iOS 6 partir.
Vous avez besoin de mettre en parallèle cette méthode avec la nouvelle supportedInterfaceOrientations et shouldAutorotate méthodes.
Et il est très très important, vous devez vous assurer que vous définissez la racine contrôleur dans votre application délégué applicationDidFinishLaunching méthode plutôt que de simplement ajouter le point de vue du contrôleur de vue ( ou manette de navigation ou tabBar Contrôleur en fonction de ce que vous utilisez ) comme une sous-vue de la fenêtre.
OriginalL'auteur Vish_iOS