Ограничение жеста панорамирования заданной рамкой - PullRequest
0 голосов
/ 06 марта 2019

Я искал в StackOverflow пару дней, и ни один из ответов не сработал.

У меня есть UIImageView, и я пытаюсь переместить метку внутри него. Сейчас я могу перемещать метку, но она выходит за пределы UIImageView.

Вот мой код жеста панорамирования:

var initialCenter = CGPoint()

    @objc func userDragged(pan: UIPanGestureRecognizer) {

        guard let senderView = pan.view else { return }
        guard let parentView = senderView.superview else { return }

        let translation = pan.translation(in: imageHolder)

        if pan.state == .began {
            self.initialCenter = senderView.center
            print(self.initialCenter)
        }

        // update the position.
        if pan.state == .changed {

            let newCenter = CGPoint(x: initialCenter.x + translation.x, y: initialCenter.y + translation.y)
            senderView.center = newCenter

        } else if pan.state == .ended || pan.state == .cancelled {

            print("ended or cancelled")

            let finalCenter = CGPoint(x: senderView.center.x, y: senderView.center.y)
            senderView.center = finalCenter
        } else {
            senderView.center = initialCenter
        }
    }

1 Ответ

0 голосов
/ 06 марта 2019

Возможно, вам понадобится добавить метку в imageView здесь.

  override func viewDidAppear(_ animated: Bool) {
    // imageHolder is UIImageView.

    imageHolder.clipsToBounds = true
    imageHolder.backgroundColor = UIColor.black

    //the label is called labelView here

      imageHolder.addSubview(self.labelView)
      imageHolder.isUserInteractionEnabled = true
     self.labelView.isUserInteractionEnabled = true


}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...