Tinder como Animación usando UIPanGestureRecognizer y Rotación

Estoy intentando implementar Tinder como animation para deslizar una image hacia la izquierda y hacia la derecha y rotarla mientras lo hace. Tengo una gran variedad de imágenes y necesito deslizarlas una tras otra.

Hasta el momento, he podido utilizar UIPanGestureRecognizer para mover la image, pero cuando trato de rotar la image, todo se rompe.

He cargado el código aquí . ¿Podría alguien señalarme en la dirección correcta para desarrollar el algorithm y afinarlo para lograr la perfección como Tinder?

Puede hacer esto escuchando toquesBegan, tocaMoved y toca Métodos seleccionados.

Básicamente esto es lo que debes hacer:

  1. En touchesBegan obtendrá el punto de contacto con respecto a la vista actual (lo necesitará más tarde para rotar la image mediante el anclaje en este punto).
  2. En touchesMoved, obtén el punto táctil con respecto a supervise y mueve la vista a medida que se mueven los toques.
  3. Aplique una pequeña rotation basada en el movimiento usando CGAffineTransformMakeRotation
  4. En TouchesEnded , mueva la vista fuera de la pantalla o vuelva a colocarla en su position inicial.

Espero que esta ayuda … Verifique este repository como reference.

Como mencionó Shri, debes manejar el estado de los reconocedores de gestos panorámicos. Aquí está el ejemplo rápido de código

func panGestureRecognized(gestureRecognizer: UIPanGestureRecognizer) { xDistanceFromCenter = gestureRecognizer.translationInView(self).x yDistanceFromCenter = gestureRecognizer.translationInView(self).y let touchLocation = gestureRecognizer.locationInView(self) switch gestureRecognizer.state { case .Began: originalLocation = center animationDirection = touchLocation.y >= frame.size.height / 2 ? -1.0 : 1.0 break case .Changed: let rotationStrength = min(xDistanceFromCenter / self.frame.size.width, rotationMax) let rotationAngle = animationDirection * defaultRotationAngle * rotationStrength let scaleStrength = 1 - ((1 - scaleMin) * fabs(rotationStrength)) let scale = max(scaleStrength, scaleMin) let transform = CGAffineTransformMakeRotation(rotationAngle) let scaleTransform = CGAffineTransformScale(transform, scale, scale) self.transform = scaleTransform break case .Ended: swipeMadeAction() default : break } } 

Puede ver nuestra implementación en este repository: https://github.com/Yalantis/Koloda

Acabo de implementar esto recientemente para la compañía para la que trabajo y decidí abrirlo. https://github.com/skensell/MXCardsSwipingView

Utilicé el UIPanGestureRecognizer en combinación con UIAttachmentBehavior . Introducido en iOS 7, es conceptualmente más fácil y less codificado. Es como adjuntar un dedo a esa parte de UIView .

Más detalles aquí: https://github.com/skensell/MXCardsSwipingView/blob/master/MXCardsSwipingView/Classes/MXCardsSwipingView.m