La compréhension de l'iOS 6 Interface de changement d'orientation
AJOUTÉ:
Je vois que ma question est considérée souvent sans upvotes j'ai donc décidé que les gars, vous n'obtenez pas ce que vous recherchez. Vous allez être redirigé à la question qui a vraiment belle réponse à ce sujet
Comment gérer les changements d'orientation dans iOS6
Exigences spécifiques pour les changements d'orientation:
Limité la rotation
Upvotes sont les bienvenus 🙂
J'ai créé un nouveau projet de Master modèle de Détails et d'essayer de démarrer avec une orientation paysage.
Comme vous le savez le
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
méthode est obsolète et nous devons l'utiliser
- (NSUInteger)supportedInterfaceOrientations
et/ou
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
Voici mon code:
- (NSUInteger)supportedInterfaceOrientations {
NSLog(@"supported called");
return UIInterfaceOrientationMaskAll;//Which is actually a default value
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
NSLog(@" preferred called");//This method is never called. WHY?
return UIInterfaceOrientationLandscapeRight;
}
Comme vous pouvez le voir je suis en train de retourner l'orientation paysage dans la méthode préférée mais elle n'est jamais appelée.
p.s. documentation:
Discussion Le système appelle cette méthode lors de la présentation de la vue
contrôleur de plein écran. Vous implémentez cette méthode lors de votre point de vue
contrôleur prend en charge deux ou plus de deux orientations, mais le contenu s'affiche
meilleur dans l'une de ces orientations.Si votre vue-contrôleur met en œuvre cette méthode, puis lors de sa présentation,
de son point de vue est illustré dans l'orientation préférée (bien qu'il puisse plus tard
être mis en rotation à un autre pris en charge la rotation). Si vous n'implémentez pas
cette méthode, le système présente le point de vue du contrôleur à l'aide de l'actuel
l'orientation de la barre d'état.
Donc, la question est: Pourquoi le prefferredOrientation méthode n'est jamais appelé? Et comment devons-nous traiter les différentes orientations dans les différents contrôleurs?. Merci!
P. S ne marque pas la question des doublons. J'ai étudié toutes les questions similaires et ils n'ont pas de réponse pour le mien.
- Vous pouvez suivre Apple tutoriel pour le même prise en charge de Plusieurs Interface Orientations Espérons que cela va vous aider.
- À partir de votre lien: "Quand une-vue-contrôleur est présenté sur la racine-vue-contrôleur, le système de changements de comportement de deux façons. Tout d'abord, la vue-contrôleur est utilisé à la place de la vue racine contrôleur au moment de déterminer si une orientation est prise en charge. Deuxièmement, la vue contrôleur peut également fournir une orientation privilégiée. Si le point de vue du contrôleur est présenté en plein écran, l'interface utilisateur est présenté dans l'orientation préférée." C'est ce que je fais....ou je ne comprends pas..veuillez expliquer plus en détails..
Vous devez vous connecter pour publier un commentaire.
Sur preferredInterfaceOrientationForpresentation
preferredInterfaceOrientationForPresentation
n'est jamais appelé ainsi parce que ce n'est pas un "présenté" - vue-contrôleur. Il n'y a pas de "présentation" à l'œuvre ici."Présenté" et "présentation" ne sont pas certains des termes vagues qui signifie "apparaît". Ce sont précis, termes techniques, ce qui signifie que ce point de vue contrôleur est mis en jeu à l'appel
presentViewController:animated:completion:
. En d'autres termes, cet événement arrive seulement si c'est ce que nous appelons un "modal" - vue-contrôleur.Bien, votre vue-contrôleur est pas un modal-vue-contrôleur; il est pas mise en jeu
presentViewController:animated:completion:
. Donc, il n'y a pas de "présentation" impliqués, et doncpreferredInterfaceOrientationForPresentation
est pas pertinente ici.Je suis très explicite à ce sujet, car je pense que beaucoup de gens seront de confusion ou de tromperie de la même manière que l'étaient. Peut-être cette remarque va les aider.
Lancer dans le Paysage
Dans iOS 6, la "prise en charge de l'Interface Orientations" clé en votre Info.plist est prise beaucoup plus au sérieux que précédemment. La solution à votre problème général de se lancer dans une orientation souhaitée est:
Assurez-vous que la "prise en charge de l'Interface Orientations" dans votre Info.plist listes tous orientations de votre application jamais être autorisé à assumer.
Assurez-vous que le souhaité lancement orientation est première au sein de la "prise en charge de l'Interface Orientations".
C'est tout là est à lui. Vous ne devez en fait ont pour mettre tout le code dans la racine de la vue-contrôleur pour gérer l'orientation initiale.
Si vous souhaitez lancer modal en Mode Paysage, il suffit de mettre ce code dans présenté view controller
Puis, présentez ce contrôleur comme d'habitude
Il n'y est une réponse très simple: Vous pouvez seulement modifier ou de corriger l'interface de l'orientation d'un modal présenté-vue-contrôleur. Si vous le faites c'est à dire avec un Présent Modal segue dans Interface builder (ou la manette de navigation méthode), vous pouvez définir le permis orientations
Cet événement ne se déclenche pas lorsque vous pousser une-vue-contrôleur sur la manette de navigation ... donc : Vous n'avez pas un bouton de RETOUR et ont besoin d'un
pour le fermer.