Swift - Tinder effect

前端 未结 4 1835
醉酒成梦
醉酒成梦 2020-12-29 00:02

How can I achieve Tinder effect in Swift?

I mean, I have an image and want to accept if I swipe to right and reject if I swipe to left.

I can do it with the

4条回答
  •  佛祖请我去吃肉
    2020-12-29 00:24

    I would like to thanks the people who suggested solutions. Follow the solution I developed with a huge help of a lot of people from Stack Overflow:

    @IBAction func Arrastei(sender: UIPanGestureRecognizer) {
        var origem =  CGPoint(x: 0, y: 0)
        var translation : CGPoint = sender.translationInView(Imagem)
    
        var txy : CGAffineTransform = CGAffineTransformMakeTranslation(translation.x, -abs(translation.x) / 15)
        var rot : CGAffineTransform = CGAffineTransformMakeRotation(-translation.x / 1500)
        var t : CGAffineTransform = CGAffineTransformConcat(rot, txy);
        Imagem.transform = t
    
        if (translation.x > 100) {
            LbResultado.textColor = btVerdadeiro.textColor
            LbResultado.text = btVerdadeiro.text
            LbResultado.hidden = false
        } else {
            if (translation.x < -100) {
                LbResultado.textColor = btFalso.textColor
                LbResultado.text = btFalso.text
                LbResultado.hidden = false
            } else {
                LbResultado.hidden = true
            }
        }
    
    
        if sender.state == UIGestureRecognizerState.Ended {
            if (translation.x > 100) {
                objJogo.Rodada_Vigente!.Responder(true)
            } else {
    
                if (translation.x < -100) {
                    objJogo.Rodada_Vigente!.Responder(false)
                } else {
                    sender.view.transform = CGAffineTransformMakeTranslation(origem.x, origem.y)
                    sender.view.transform = CGAffineTransformMakeRotation(0)
                }
            }
        }
    }
    

    This solution uses:

    Imagem --> UIImageView - to be accepted or rejected

    LbResultado --> UITextView - to show the user he is in acceptance or rejection area

    There is no math calculations to set rotation and translation. I used values that give me a visually good effect.

    The action (acceptance and rejection) area is when the user drag image more than 100 pixels to left (reject) or right (accept). If the user ends the movement out the action area, the image will go back to its original position.

    I will be glad if someone suggests improvements to this code.

提交回复
热议问题