Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @objc private func handlePanGesture(_ recognizer: UIPanGestureRecognizer) {
- switch recognizer.state {
- case .began:
- panStartPoint = recognizer.translation(in: subContentView)
- startingLeftConstraingConstant = subContentLeftConstraint.constant
- case .changed:
- let currentPoint = recognizer.translation(in: subContentView)
- let deltaX = currentPoint.x - panStartPoint.x
- let panningLeft = currentPoint.x < panStartPoint.x
- if startingLeftConstraingConstant == 0 {
- //была закрыта, сейчас открывается
- if panningLeft {
- subContentLeftConstraint.constant = max(deltaX, -sideMenuWidth)
- } else {
- subContentLeftConstraint.constant = min(deltaX, 0)
- }
- } else {
- //хотя бы частично была открыта
- let adjustment = startingLeftConstraingConstant + deltaX
- if panningLeft {
- subContentLeftConstraint.constant = max(adjustment, -sideMenuWidth)
- } else {
- subContentLeftConstraint.constant = min(adjustment, 0)
- }
- }
- case .ended:
- if startingLeftConstraingConstant == 0 {
- let neededConstantToOpen = -sideMenuWidth / 6
- if subContentLeftConstraint.constant <= neededConstantToOpen {
- _setSideMenuHidden(false, animated: true, notifyDelegate: true)
- } else {
- _setSideMenuHidden(true, animated: true, notifyDelegate: false)
- }
- } else {
- let neededConstantToClose = -sideMenuWidth * 5 / 6
- if subContentLeftConstraint.constant >= neededConstantToClose {
- _setSideMenuHidden(true, animated: true, notifyDelegate: true)
- } else {
- _setSideMenuHidden(false, animated: true, notifyDelegate: false)
- }
- }
- case .cancelled:
- //delegate?.messageItemCellDidEndPan(self)
- if startingLeftConstraingConstant == 0 {
- _setSideMenuHidden(true, animated: true, notifyDelegate: false)
- } else {
- _setSideMenuHidden(false, animated: true, notifyDelegate: false)
- }
- default:
- break
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement