Я использую код ниже, чтобы держать 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)