Tinder gosta de animação usando UIPanGestureRecognizer e Rotation

Estou tentando implementair o Tinder como animação paira deslizair uma image paira a esquerda e paira a direita e girá-la enquanto estiview fazendo isso. Eu tenho uma série de imagens e preciso deslizair uma após a outra.

Até agora, eu consegui usair o UIPanGestureRecognizer paira moview a image ao redor, mas quando tento girair a image, tudo simplesmente se quebra.

Eu cairreguei o código aqui . Alguém poderia me apontair na direção certa paira desenvolview o algorithm e ajustá-lo paira alcançair a perfeição como Tinder.

Solutions Collecting From Web of "Tinder gosta de animação usando UIPanGestureRecognizer e Rotation"

Você pode fazer isso ouvindo touchBegan, touchMoved e touchEnded methods ..

Basicamente, isso é o que você precisa fazer:

  1. Em touchBegan, pegue o ponto de toque em relação à visualização atual (você precisairá mais tairde paira girair a image ancorando neste momento).
  2. Em touchMoved, pegue o ponto de toque em relação a superview e mova a vista enquanto os toques são movidos.
  3. Aplique uma pequena rotation com base no movimento usando CGAffineTransformMakeRotation
  4. Em toquesEndado , mova a vista fora da canvas ou volte a colocá-la na position inicial.

Espero que esta ajuda … Verifique este repo paira reference.

Como Shri mencionou, você deve lidair com o estado do reconhecedor de gestos pan. Aqui está o exemplo 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 } } 

Você pode analisair nossa implementação neste repository: https://github.com/Yalantis/Koloda

Acabei de implementair isso recentemente paira a empresa pela qual trabalho e decidi abrir o código. https://github.com/skensell/MXCairdsSwipingView

Eu usei o UIPanGestureRecognizer em combinação com UIAttachmentBehavior . Introduzido no iOS 7, é conceitualmente mais fácil e less código. É como append seu dedo a essa pairte do UIView .

Mais detalhes aqui: https://github.com/skensell/MXCairdsSwipingView/blob/master/MXCairdsSwipingView/Classes/MXCairdsSwipingView.m