Я работаю над ползунком, который при перемещении обновляет значение определенной метки.Линейка в ползунке имеет вертикальное ограничение, чтобы держать его только над другим элементом, и еще один, чтобы центрировать его по горизонтали.
Если я не обновляю метку, изменяя позицию бара с помощью PanGestureRecognizer
отлично работает:
@IBAction func handlePan(recognizer: UIPanGestureRecognizer) {
let translation = recognizer.translation(in: self.view)
if let meterView = recognizer.view {
let minX = view.bounds.minX + meterView.bounds.width/2
let maxX = view.bounds.maxX - meterView.bounds.width/2
var resultingX = meterView.center.x + translation.x
resultingX = resultingX < minX ? minX : resultingX
resultingX = resultingX > maxX ? maxX : resultingX
meterView.center = CGPoint(x: resultingX,
y: meterView.center.y)
updateHeight(at: meterView.center.x/(maxX-minX))
}
recognizer.setTranslation(CGPoint.zero, in: self.view)
}
func updateHeight(at percentage: CGFloat) {
let percentage = Float(percentage)
heightLabel.text = String((maxHeight - minHeight)*percentage)
}
Однако, если я изменю метку в любой точке этого панорамы (во время или в конце), полоса переместится обратно в горизонтальный центр, я думаю, из-заограничение.
Если я устраняю горизонтальное (или все) ограничение (я) во время панорамирования, то полоса полностью выпрыгивает из экрана, как я делаю небольшое панорамирование.
Есть лиспособ не дать контроллеру обновить вид бара обратно в его заданное ограничением положение?
Спасибо!