Swift - PanGestureRecognizer с анимацией героя - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь реализовать анимацию, как описано в этом Учебном пособии , используя Hero-Framework.

В данный момент я нахожусь на Шаг 3 в Учебном пособии где пользователь должен иметь возможность перетащить вид. Однако это не работает для меня. Это мой код:

// define a small helper function to add two CGPoints
func addCGPoints (left: CGPoint, right: CGPoint) -> CGPoint {
  return CGPoint(x: left.x + right.x, y: left.y + right.y)
}

// handle swqipe down gesture
@objc private func handlePan(gestureRecognizer:UIPanGestureRecognizer) {
  switch panGR.state {
  case .began:
    // begin the transition as normal
    dismiss(animated: true, completion: nil)
  case .changed:
    // calculate the progress based on how far the user moved
    let translation = panGR.translation(in: nil)
    let progress = translation.y / 2 / view.bounds.height
    Hero.shared.update(progress)

    // update views' position based on the translation
    Hero.shared.apply(modifiers: [.position(addCGPoints(left: translation, right: self.wishlistBackgroundView.center))], to: self.wishlistBackgroundView)
    Hero.shared.apply(modifiers: [.position(addCGPoints(left: translation, right: self.dismissWishlistViewButton.center))], to: self.dismissWishlistViewButton)
    Hero.shared.apply(modifiers: [.position(addCGPoints(left: translation, right: self.menueButton.center))], to: self.menueButton)
  default:
    // end the transition when user ended their touch
    Hero.shared.finish()
  }
}

Вот как я настроил ViewController:

view.addSubview(wishlistBackgroundView)
    view.addSubview(dismissWishlistViewButton)
    view.addSubview(menueButton)
    wishlistBackgroundView.addSubview(wishlistView)
    wishlistView.addSubview(wishlistLabel)
    wishlistView.addSubview(wishlistImage)
    wishlistView.addSubview(theTableView.tableView)
    wishlistView.addSubview(addWishButton)

. Прямо сейчас вид не перетаскивается, как показано в руководстве. Шаг 1 и Шаг 2 работают отлично, но каким-то образом обновление позиции представлений на основе перевода не работает для меня.

Кто-нибудь знает, что я делаю не так? Если есть больше контекста, чтобы объяснить, дайте мне знать:)

1 Ответ

0 голосов
/ 10 января 2020

исправил это, добавив эту строку:

self.wishlistBackgroundView.hero.modifiers = [.fade, .translate(CGPoint(x: 0, y: 800), z: 20)]
...