Swipeable.swift 834 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //
  2. // Swipeable.swift
  3. //
  4. // Created by Jeremy Koch
  5. // Copyright © 2017 Jeremy Koch. All rights reserved.
  6. //
  7. import UIKit
  8. // MARK: - Internal
  9. protocol Swipeable {
  10. var state: SwipeState { get set }
  11. var actionsView: SwipeActionsView? { get set }
  12. var frame: CGRect { get }
  13. var scrollView: UIScrollView? { get }
  14. var indexPath: IndexPath? { get }
  15. var panGestureRecognizer: UIGestureRecognizer { get }
  16. }
  17. extension SwipeTableViewCell: Swipeable {}
  18. extension SwipeCollectionViewCell: Swipeable {}
  19. enum SwipeState: Int {
  20. case center = 0
  21. case left
  22. case right
  23. case dragging
  24. case animatingToCenter
  25. init(orientation: SwipeActionsOrientation) {
  26. self = orientation == .left ? .left : .right
  27. }
  28. var isActive: Bool { return self != .center }
  29. }