Я пытаюсь сделать слайд UIView между 2 точками на слайде. Я попытался использовать UIPanGestureRecognizer. Скольжение в порядке, но когда представление достигает предельной точки, происходит ухабистый прыжок. Это негласно. Это моя функция жеста:Скользящий UIView между 2 фиксированными точками
func wasDragged(gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == UIGestureRecognizerState.began || gestureRecognizer.state == UIGestureRecognizerState.changed {
let translation = gestureRecognizer.translation(in: self.view)
print(gestureRecognizer.view!.center.x)
if(gestureRecognizer.view!.center.x <= self.view.frame.width) && (gestureRecognizer.view!.center.x >= self.view.frame.width - 100) {
gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y)
}else if (gestureRecognizer.view!.center.x > self.view.frame.width){
gestureRecognizer.view!.center = CGPoint(x: self.view.frame.width, y: gestureRecognizer.view!.center.y)
}else if (gestureRecognizer.view!.center.x < self.view.frame.width - 100){
gestureRecognizer.view!.center = CGPoint(x: self.view.frame.width - 100, y: gestureRecognizer.view!.center.y)
}
gestureRecognizer.setTranslation(CGPoint(x: 0,y: 0), in: self.view)
}
}
Любая помощь? Благодарю.
Ваш код очень спорный. Его можно было бы записать гораздо более аккуратно и компактно, используя несколько промежуточных локальных переменных. Вы не должны устанавливать 'center', точку, в терминах' width', length. И почему ваш третий тест 'else if' ли центр x равен _less_, чем ширина минус 100? Конечно, вы тогда прыгаете на ширину минус 100! Это то, что говорит ваш код. – matt
Хорошо, что y фиксировано. Я перемещаю customView между двумя точками с координатами: шириной исходного вида и этой шириной -100. –
«Ширина исходного вида» не является точкой, а не координатой. Это длина. – matt