Я создаю жест для представления, которое я назвал separatorView (на фотографии это средний черный вид).
Я использую метод ограничения и приоритеты, чтобы сделать это:
-centerConstraint = Это ограничение, позволяющее центрировать вид по горизонтали в X, приоритет = 1000
-rightConstant = Это ограничение связывает вид с краем правого экрана с нулевым шагом, приоритет = 999
-GaucheConstant = Это ограничение связывает вид с краем левого экрана с нулевым шагом, приоритет = 998
Когда я перетаскиваю этот вид влево, анимация продолжает перетаскиваться.
Проблема в том, что после завершения анимации я хочу возобновить просмотр и перетащить его влево. Центр обработки наличных денег равен нулю!
Я не могу найти решение, чтобы сделать все это общим, и я могу без проблем перемещать вид вправо или влево
Я знаю, что проблема связана с тем, что я отключаю ограничение
вот мой код:
@IBOutlet weak var sep: UIView!
@IBOutlet weak var constantGauche: NSLayoutConstraint!
@IBOutlet weak var constantDroite: NSLayoutConstraint!
@IBOutlet weak var centerConstraint: NSLayoutConstraint!
var startingConstant: CGFloat = 0.0
var panGesture: UIPanGestureRecognizer?
override func viewDidLoad() {
super.viewDidLoad()
panGesture = UIPanGestureRecognizer(target: self, action: #selector(detectPan(recognizer:)))
panGesture?.delaysTouchesBegan = false
panGesture?.delaysTouchesEnded = false
sep.addGestureRecognizer(panGesture!)
}
@objc func detectPan(recognizer: UIPanGestureRecognizer) {
let translation = recognizer.translation(in: self.view)
switch recognizer.state {
case .began:
self.startingConstant = self.centerConstraint.constant
case .changed:
self.centerConstraint.constant = self.startingConstant + translation.x
case .ended:
if translation.x > 0 {
centerConstraint.isActive = false
constantGauche.isActive = false
constantDroite.isActive = true
UIView.animate(withDuration: 0.5) {
self.view.layoutIfNeeded()
}
}else{
centerConstraint.isActive = false
constantGauche.isActive = true
constantDroite.isActive = false
UIView.animate(withDuration: 0.5) {
self.view.layoutIfNeeded()
}
}
default:
break
}
}