PhotoEditor+StickersViewController.swift 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // PhotoEditor+StickersViewController.swift
  3. // Pods
  4. //
  5. // Created by Mohamed Hamed on 6/16/17.
  6. //
  7. //
  8. import Foundation
  9. import UIKit
  10. extension PhotoEditorViewController {
  11. func addStickersViewController() {
  12. stickersVCIsVisible = true
  13. hideToolbar(hide: true)
  14. self.canvasImageView.isUserInteractionEnabled = false
  15. stickersViewController.stickersViewControllerDelegate = self
  16. for image in self.stickers {
  17. stickersViewController.stickers.append(image)
  18. }
  19. self.addChild(stickersViewController)
  20. self.view.addSubview(stickersViewController.view)
  21. stickersViewController.didMove(toParent: self)
  22. let height = view.frame.height
  23. let width = view.frame.width
  24. stickersViewController.view.frame = CGRect(x: 0, y: self.view.frame.maxY , width: width, height: height)
  25. }
  26. func removeStickersView() {
  27. stickersVCIsVisible = false
  28. self.canvasImageView.isUserInteractionEnabled = true
  29. UIView.animate(withDuration: 0.3,
  30. delay: 0,
  31. options: UIView.AnimationOptions.curveEaseIn,
  32. animations: { () -> Void in
  33. var frame = self.stickersViewController.view.frame
  34. frame.origin.y = UIScreen.main.bounds.maxY
  35. self.stickersViewController.view.frame = frame
  36. }, completion: { (finished) -> Void in
  37. self.stickersViewController.view.removeFromSuperview()
  38. self.stickersViewController.removeFromParent()
  39. self.hideToolbar(hide: false)
  40. })
  41. }
  42. }
  43. extension PhotoEditorViewController: StickersViewControllerDelegate {
  44. func didSelectView(view: UIView) {
  45. self.removeStickersView()
  46. view.center = canvasImageView.center
  47. self.canvasImageView.addSubview(view)
  48. //Gestures
  49. addGestures(view: view)
  50. }
  51. func didSelectImage(image: UIImage) {
  52. self.removeStickersView()
  53. let imageView = UIImageView(image: image)
  54. imageView.contentMode = .scaleAspectFit
  55. imageView.frame.size = CGSize(width: 150, height: 150)
  56. imageView.center = canvasImageView.center
  57. self.canvasImageView.addSubview(imageView)
  58. //Gestures
  59. addGestures(view: imageView)
  60. }
  61. func stickersViewDidDisappear() {
  62. stickersVCIsVisible = false
  63. hideToolbar(hide: false)
  64. }
  65. func addGestures(view: UIView) {
  66. //Gestures
  67. view.isUserInteractionEnabled = true
  68. let panGesture = UIPanGestureRecognizer(target: self,
  69. action: #selector(PhotoEditorViewController.panGesture))
  70. panGesture.minimumNumberOfTouches = 1
  71. panGesture.maximumNumberOfTouches = 1
  72. panGesture.delegate = self
  73. view.addGestureRecognizer(panGesture)
  74. let pinchGesture = UIPinchGestureRecognizer(target: self,
  75. action: #selector(PhotoEditorViewController.pinchGesture))
  76. pinchGesture.delegate = self
  77. view.addGestureRecognizer(pinchGesture)
  78. let rotationGestureRecognizer = UIRotationGestureRecognizer(target: self,
  79. action:#selector(PhotoEditorViewController.rotationGesture) )
  80. rotationGestureRecognizer.delegate = self
  81. view.addGestureRecognizer(rotationGestureRecognizer)
  82. let tapGesture = UITapGestureRecognizer(target: self, action: #selector(PhotoEditorViewController.tapGesture))
  83. view.addGestureRecognizer(tapGesture)
  84. }
  85. }