0

J'utilise CGAffineTransformMakeTranslation avec UIPanGestureRecognizer pour afficher un UIView.CGAffineTransformMakeTranslation Movement

Est-ce que CGAffineTransformMakeTranslation prend delta x et delta y ou la valeur absolue de la nouvelle position? Voici ce que j'ai:

- (void)swipeDetected:(UIPanGestureRecognizer *)recognizer 
{ 

    CGPoint newTranslation = [recognizer translationInView:self.view]; 
    self.navController.view.transform = CGAffineTransformMakeTranslation(newTranslation.x, 0); 
    ..... 
} 

Cela fonctionne de gauche à droite, mais pas de droite à gauche. Je suis sûr que "traduction" signifie delta x et delta y et non la valeur absolue.

Des suggestions?

Merci

Répondre

3

Réglage de la transformation est une opération immédiate car il est juste multiplication matricielle de l'emplacement de la vue.

Si vous avez besoin de revenir de votre position actuelle, vous pouvez enregistrer le fichier de transformation à un Ivar et utiliser une transformation inverse, à savoir:

_currentTransform = CGAffineTransformMakeTranslation(newTranslation.x, 0);

et plus tard:

CGAffineTransform inverse = CGAffineTransformInvert(_currentTransform);

Si vous souhaitez supprimer toutes les transformations, vous pouvez le faire self.transform = CGAffineTransformIdentity

Espérons que cela aide!

Questions connexes