Swift4: как ограничить панорамирование в поле зрения? - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно ограничить свой экран, чтобы иметь ограниченное пространство для перетаскивания моего UIView.Это мой UIPanGestureRecognizer:

@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
        let translation = recognizer.translation(in: self.view)
        let statusFrame = UIApplication.shared.statusBarFrame


        if let recognizerView = recognizer.view {
            if recognizerView.frame.origin.x < 0.0 {
                recognizerView.frame.origin = CGPoint(x: 0.0, y: recognizerView.frame.origin.y)
            }
            if recognizerView.frame.origin.y < statusFrame.height {
                recognizerView.frame.origin = CGPoint(x: recognizerView.frame.origin.x, y: statusFrame.height)
            }
            if recognizerView.frame.origin.x + recognizerView.frame.size.width > view.frame.width {
                recognizerView.frame.origin = CGPoint(x: view.frame.width - recognizerView.frame.size.width, y: recognizerView.frame.origin.y)

            }
            if recognizerView.frame.origin.y + recognizerView.frame.size.height > view.frame.height {
                recognizerView.frame.origin = CGPoint(x: recognizerView.frame.origin.x, y: view.frame.height - recognizerView.frame.size.height)
            }
        }

        if let centerX = recognizer.view?.center.x, let centerY = recognizer.view?.center.y {
            recognizer.view?.center = CGPoint.init(x: centerX + translation.x , y: centerY + translation.y)
            recognizer.setTranslation(CGPoint.zero, in: self.view)
        }

        view.bringSubviewToFront(view1)
        recognizer.setTranslation(CGPoint.zero, in: self.view)
}

Я нашел свое решение для ограничения представления здесь, но это устанавливает странные ограничения экрана: я могу перетащить UIView только в небольшую часть экрана, и я не могуисправить это. Плюс, если я попробую на разных устройствах с разными размерами экрана, у них у всех будут разные ограничения.Есть ли способ установить универсальный лимит?

Итак, мои проблемы:

  • Fixig screen limit;
  • Установка универсального ограничения экрана.

Пожалуйста, если вы можете сказать мне, где я должен изменить свой код, чтобы изменить ограничения.

...