Держите ImageView в границах экрана Swift - PullRequest
0 голосов
/ 28 февраля 2019

Я использую код ниже, чтобы держать imageView / player внутри экрана.Код работает по большей части, но иногда плеер вылетает с экрана и полностью исчезает.Я использую UIPanGestureRecognizer для перемещения изображения по экрану.Используя Swift и UIKit , как мне сохранить изображение в пределах экрана сто процентов времени, чтобы изображение не вылетело с экрана?

@objc func panFunction(_ sender: UIPanGestureRecognizer) {

    if sender.state == .began || sender.state == .changed {

        let translation = sender.translation(in: sender.view)

        let changeX = (sender.view?.center.x)! + translation.x
        let changeY = (sender.view?.center.y)! + translation.y
        let senderWidth = sender.view!.bounds.width / 2
        let senderHeight = sender.view!.bounds.height / 2
        sender.view?.center = CGPoint(x: changeX, y: changeY)

        if changeX <= senderWidth {
            sender.view!.center = CGPoint(x: senderWidth, y: sender.view!.center.y + translation.y)

        }else

            if changeX >= self.view.bounds.maxX - senderWidth {
                sender.view!.center = CGPoint(x: self.view.bounds.maxX - senderWidth, y: sender.view!.center.y + translation.y)
        }

        if changeY <= senderHeight {
            sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: senderHeight)

        }else

            if changeY >= self.view.bounds.maxY - senderHeight {
                sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: self.view.bounds.maxY - senderHeight)

            }else{
                sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
        }

        sender.setTranslation(CGPoint.zero, in: self.view)
...