Добавьте анимацию для жестов смахивания в Swift

У меня есть жест смахивания в моем приложении, когда вы проводите пальцем, он меняет текст на экране. Как мне сделать так, чтобы он выглядел так, будто он скользит к новому тексту, а не просто мгновенно меняет текст?


person zachlul    schedule 30.06.2015    source источник
comment
зачлул, мой ответ имеет смысл??   -  person Shailesh Chandavar    schedule 30.06.2015


Ответы (1)


Вы можете сделать одну вещь !!! добавить вид за своим жестом, этот вид должен выглядеть так же, как вид жеста (должен даже иметь тот же текст), и однажды после распознавания жеста перенесите этот вид перед вашим жестом, просмотрите его. должен иметь старый текст (не обновлять текст) и обновлять текстовые представления вашего жеста, которые он перемещает за недавно добавленным представлением, просто измените рамку вновь добавленного представления, чтобы оно давало эффект скольжения (изменение его ширины) один раз после завершающая анимация возвращает этот вид в режим просмотра жестов и меняет его кадр на предыдущее его значение.

проверьте этот образец:

 func handleGesture(sender:UISwipeGestureRecognizer) {
    //bring background view to front
    self.view.bringSubviewToFront(self.backGroundView)
    self.gestureView.userInteractionEnabled = false

    //capture its initialAutolayout constraint
    let backgroundViewSpaceConstarint  = self.backGroundViewLeftSpaceConstraint.constant
    UIView.animateWithDuration(2, animations: { [unowned self]() -> Void in
        self.someRandomValue++

        // update text label in gesture view which is behind background View
        self.gestureViewTextLabel.text = "swiped \(self.someRandomValue) times"

        //slide backgroundView in required direction by using autolayout
        self.backGroundViewLeftSpaceConstraint.constant = self.backGroundView.bounds.size.width
        self.backGroundView.layoutIfNeeded()
        }) { [unowned self](completion:Bool) -> Void in
            //after animation complition bring gesture view to the front.
            self.backgroundTextLabel.text =  "swiped \(self.someRandomValue) times"
            self.gestureView.userInteractionEnabled = true

            //upadte background view so that it will look the same for next swipe
            self.backGroundViewLeftSpaceConstraint.constant = backgroundViewSpaceConstarint
            //send the background view behind gesture view
            self.view.sendSubviewToBack(self.backGroundView)
          }
  }
person Shailesh Chandavar    schedule 30.06.2015