Я пытаюсь создать пользовательский ползунок, чтобы пользователь мог передвигать его для выполнения действия, ползунок готов, но у меня есть проблема, из-за которой мне всегда приходится заново настраивать значения, когда я решаю полностью разложить вид.Время от времени изображение слайдера соскальзывает с требуемого базового вида.
как я могу изменить этот код, чтобы убедиться, что скользящее изображение не превышает представление контейнера, и оно возвращается в исходное положение.
private func swipeFunc() {
let swipeGesture = UIPanGestureRecognizer(target: self, action: #selector(acknowledgeSwiped(sender:)))
swipeImage.addGestureRecognizer(swipeGesture)
swipeImage.isUserInteractionEnabled = true
swipeGesture.delegate = self as? UIGestureRecognizerDelegate
}
@objc func acknowledgeSwiped(sender: UIPanGestureRecognizer) {
let minAdjust: CGFloat = 160
let maxAdjust: CGFloat = 72
if let sliderView = sender.view {
if sender.state == UIGestureRecognizer.State.began || sender.state == UIGestureRecognizer.State.changed {
let translation = sender.translation(in: self.view)
if sliderView.center.x >= (swipeView.center.x - minAdjust) && sliderView.center.x <= (swipeView.center.x + maxAdjust) {
sliderView.center.x = sliderView.center.x + translation.x
} else if sliderView.center.x >= (swipeView.center.x + maxAdjust) {
sliderView.center.x = swipeView.center.x + maxAdjust
// dismiss(animated: true, completion: nil)
} else {
sliderView.center.x = swipeView.center.x - minAdjust
}
sender.setTranslation(CGPoint.zero, in: self.view)
} else if sender.state == UIGestureRecognizer.State.ended {
UIView.animate(withDuration: 0.1, animations: {
sliderView.center.x = self.swipeView.center.x - minAdjust
})
}
}
}