SwipeFeedback.swift 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // SwipeFeedback.swift
  3. //
  4. // Created by Jeremy Koch
  5. // Copyright © 2017 Jeremy Koch. All rights reserved.
  6. //
  7. import UIKit
  8. final class SwipeFeedback {
  9. enum Style {
  10. case light
  11. case medium
  12. case heavy
  13. }
  14. @available(iOS 10.0.1, *)
  15. private var feedbackGenerator: UIImpactFeedbackGenerator? {
  16. get {
  17. return _feedbackGenerator as? UIImpactFeedbackGenerator
  18. }
  19. set {
  20. _feedbackGenerator = newValue
  21. }
  22. }
  23. private var _feedbackGenerator: Any?
  24. init(style: Style) {
  25. if #available(iOS 10.0.1, *) {
  26. switch style {
  27. case .light:
  28. feedbackGenerator = UIImpactFeedbackGenerator(style: .light)
  29. case .medium:
  30. feedbackGenerator = UIImpactFeedbackGenerator(style: .medium)
  31. case .heavy:
  32. feedbackGenerator = UIImpactFeedbackGenerator(style: .heavy)
  33. }
  34. } else {
  35. _feedbackGenerator = nil
  36. }
  37. }
  38. func prepare() {
  39. if #available(iOS 10.0.1, *) {
  40. feedbackGenerator?.prepare()
  41. }
  42. }
  43. func impactOccurred() {
  44. if #available(iOS 10.0.1, *) {
  45. feedbackGenerator?.impactOccurred()
  46. }
  47. }
  48. }