我正在尝试实现Tinder之类的动画来向左和向右滑动图像并在此过程中旋转它。我有一系列图像,需要一个接一个地刷它们。
到目前为止,我已经能够使用 UIPanGestureRecognizer 来移动图像,但是当我尝试旋转图像时,一切都会中断。
我上传了代码here。有人能指出我正确的方向来开发算法并对其进行微调以实现像Tinder这样的完美。
答案 0 :(得分:6)
您可以通过收听 touchesBegan,touchesMoved和touchesEnded 方法来实现这一目标。
基本上这就是你需要做的事情:
希望这有帮助。请查看此repo以供参考。
答案 1 :(得分:1)
正如Shri所说,你应该处理pan手势识别器状态。这是代码的快速示例
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
}
}
您可以查看我们在此repo上的实现: https://github.com/Yalantis/Koloda
答案 2 :(得分:0)
我最近刚刚为我工作的公司实施了这个,并决定开源。 https://github.com/skensell/MXCardsSwipingView
我将UIPanGestureRecognizer
与UIAttachmentBehavior
结合使用。在iOS 7中引入,它在概念上更容易,代码更少。这就像是将手指贴在UIView
的那一部分上。