ios – Swift – Tinder效果

前端之家收集整理的这篇文章主要介绍了ios – Swift – Tinder效果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在 Swift中实现Tinder效果

我的意思是,我有一个图像,如果我向右滑动并且如果我向左滑动则拒绝接受.

我可以用下面的代码来做:

  1. @IBAction func SwipeRight(sender: UISwipeGestureRecognizer) {
  2. UIView.animateWithDuration(1) {
  3. self.Imagem.center = CGPointMake(self.Imagem.center.x - 150,self.Imagem.center.y )
  4. }
  5. //other things after acception
  6. }

  1. @IBAction func SwipeLeft(sender: UISwipeGestureRecognizer) {
  2. UIView.animateWithDuration(1) {
  3. self.Imagem.center = CGPointMake(self.Imagem.center.x + 150,self.Imagem.center.y )
  4. }
  5. //other things after rejection
  6. }

但这样用户无法取消操作.我希望如果用户从边缘(左侧或右侧)滑动到三角形距离,则会出现一个图像,让用户现在可以看到,如果他结束了移动,则会发生动作.否则,用户可以在不结束移动的情况下返回到大于delta的距离,并且动作将被取消.

@H_403_14@

解决方法

我想感谢那些提出解决方案的人.在Stack Overflow的很多人的帮助下,遵循我开发的解决方案:
  1. @IBAction func Arrastei(sender: UIPanGestureRecognizer) {
  2. var origem = CGPoint(x: 0,y: 0)
  3. var translation : CGPoint = sender.translationInView(Imagem)
  4.  
  5. var txy : CGAffineTransform = CGAffineTransformMakeTranslation(translation.x,-abs(translation.x) / 15)
  6. var rot : CGAffineTransform = CGAffineTransformMakeRotation(-translation.x / 1500)
  7. var t : CGAffineTransform = CGAffineTransformConcat(rot,txy);
  8. Imagem.transform = t
  9.  
  10. if (translation.x > 100) {
  11. LbResultado.textColor = btVerdadeiro.textColor
  12. LbResultado.text = btVerdadeiro.text
  13. LbResultado.hidden = false
  14. } else {
  15. if (translation.x < -100) {
  16. LbResultado.textColor = btFalso.textColor
  17. LbResultado.text = btFalso.text
  18. LbResultado.hidden = false
  19. } else {
  20. LbResultado.hidden = true
  21. }
  22. }
  23.  
  24.  
  25. if sender.state == UIGestureRecognizerState.Ended {
  26. if (translation.x > 100) {
  27. objJogo.Rodada_Vigente!.Responder(true)
  28. } else {
  29.  
  30. if (translation.x < -100) {
  31. objJogo.Rodada_Vigente!.Responder(false)
  32. } else {
  33. sender.view.transform = CGAffineTransformMakeTranslation(origem.x,origem.y)
  34. sender.view.transform = CGAffineTransformMakeRotation(0)
  35. }
  36. }
  37. }
  38. }

解决方案使用:

Imagem – > UIImageView – 被接受或拒绝

LbResultado – > UITextView – 向用户显示他处于接受或拒绝区域

没有数学计算来设置旋转和平移.我使用的值给了我视觉上很好的效果.

动作(接受和拒绝)区域是指用户将图像拖动到左侧(拒绝)或右侧(接受)超过100个像素.如果用户结束了移出动作区域的移动,则图像将返回其原始位置.

如果有人建议对此代码进行改进,我将很高兴.

@H_403_14@ @H_403_14@

猜你在找的iOS相关文章