12
votes

Méthode déclenchée par changement d'orientation

est ici un moyen d'exécuter une méthode lorsque l'orientation des périphériques iOS change?

Je voudrais ne changer que des orientations d'objets sur l'écran et non les autres.

Quels délégués dois-je utiliser etc.

acclamations -Un Newbie


0 commentaires

6 Réponses :


0
votes

WillroTatateTointerfaceOrientation: est la méthode que vous envisagez éventuellement. Lisez sur celui-là.


0 commentaires

0
votes

uiviewcontroller s sont envoyés WillroTateTointerFaceOrientation: Durée: juste avant la rotation et DidrotatefrominterfaceOrientation: après rotation.

Pour configurer des animations supplémentaires, utilisez WillanimaterotationTointTerfaceOrientation: Durée: ou WillanimateFiRSThalfaceOrientation: Durée: , didanimatefirsthalfofrotationToinTerfaceOrientation: et willanimatesecondhalfofrotationFrominterfaceOrientation: durée: . Ces derniers sont utilisés pour des animations en deux étapes, que vous utilisez généralement lorsque vous avez des vues d'en-tête ou de pied de page qui sont déplacées hors écran pour l'animation de transition principale.


0 commentaires

31
votes

dépend lorsque vous souhaitez réagir: strong>

si avant la rotation, Remplacement fort> à partir d'UIVIEWCONTROLLER: P>

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
 // do something after rotation
}


2 commentaires

Ces méthodes ont été obsolètes.


Obsolète dans iOS 8.0



6
votes

uidevice messages uideviceorientationdidchangenotification

uiapplication messages uiapplicationwillchangestatusbarorientationnotification et uiapplicationDidchangestatusbarorientationnotification et a un rappel de délégué associé pour chacun.

uiviewcontroller reçoit plusieurs appels liés à l'orientation déclenchés par la notification Uidevice si le contrôleur d'affichage fait partie de la hiérarchie du contrôleur gérée par une fenêtre.

Si vous utilisez déjà une UIViewController, implémentez certaines des méthodes d'orientation liées, sinon vous inscrivez-vous aux notifications Uidevice. La méthode UIViewController la plus importante est DoTutoroTatoteTointerFaceOrientation car si ce retour non Les autres ne sont pas appelés.


1 commentaires

Je préfère m'inscrire en tant qu'observateur pour recevoir les notifications d'orientation. Donc, je vote cette réponse.



0
votes

My Sandbox App: https://github.com/comonitos/programmatic_device_orientation

La solution est facile:

in Interface (fichier h): xxx

dans la mise en œuvre (fichier m):

  1. réécriture

    - (BOOL) DOITOROTETATEINTOINTERFACEORIENTATION: (UIInterfaceOrientation) InterfaceOriencement { retour tourné; }

    2 appel [auto configuration] xxx


2 commentaires

Vous ne devriez pas faire beaucoup plus que de dire au système d'exploitation si vous prenez une modification d'orientation dans la méthode DOORATOROTATETERTERFACEORIENTATION . De plus, cela est obsolète dans IOS6. développeur.apple.com/library/ios/#documentation/uikit/referen CE / ... :


Ouais. c'est maintenant. à partir de là que je transforme des vues



0
votes

Utilisez simplement cet extrait de code pour vérifier les modifications d'orientation.

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.currentDevice().orientation.isLandscape.boolValue {
        print("Landscape")
    } else {
        print("Portrait")
    }
}


1 commentaires

Ceci est incorrect comme ViewWillTransitionTosize imprimera toujours le portrait dans ce cas lorsqu'il y a une transition du portrait au paysage.