123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- //
- // PhotoEditor+Controls.swift
- // Pods
- //
- // Created by Mohamed Hamed on 6/16/17.
- //
- //
- import Foundation
- import UIKit
- // MARK: - Control
- public enum control {
- case crop
- case sticker
- case draw
- case text
- case save
- case share
- case clear
- }
- extension PhotoEditorViewController {
- //MARK: Top Toolbar
-
- @IBAction func cancelButtonTapped(_ sender: Any) {
- photoEditorDelegate?.canceledEditing()
- self.dismiss(animated: true, completion: nil)
- }
- @IBAction func cropButtonTapped(_ sender: UIButton) {
- let controller = CropViewController()
- controller.delegate = self
- controller.image = image
- let navController = UINavigationController(rootViewController: controller)
- present(navController, animated: true, completion: nil)
- }
- @IBAction func stickersButtonTapped(_ sender: Any) {
- addStickersViewController()
- }
- @IBAction func drawButtonTapped(_ sender: Any) {
- isDrawing = true
- canvasImageView.isUserInteractionEnabled = false
- doneButton.isHidden = false
- colorPickerView.isHidden = false
- hideToolbar(hide: true)
- }
- @IBAction func textButtonTapped(_ sender: Any) {
- isTyping = true
- let textView = UITextView(frame: CGRect(x: 0, y: canvasImageView.center.y,
- width: UIScreen.main.bounds.width, height: 30))
-
- textView.textAlignment = .center
- textView.font = UIFont(name: "Helvetica", size: 30)
- textView.textColor = textColor
- textView.layer.shadowColor = UIColor.black.cgColor
- textView.layer.shadowOffset = CGSize(width: 1.0, height: 0.0)
- textView.layer.shadowOpacity = 0.2
- textView.layer.shadowRadius = 1.0
- textView.layer.backgroundColor = UIColor.clear.cgColor
- textView.autocorrectionType = .no
- textView.isScrollEnabled = false
- textView.delegate = self
- self.canvasImageView.addSubview(textView)
- addGestures(view: textView)
- textView.becomeFirstResponder()
- }
-
- @IBAction func doneButtonTapped(_ sender: Any) {
- view.endEditing(true)
- doneButton.isHidden = true
- colorPickerView.isHidden = true
- canvasImageView.isUserInteractionEnabled = true
- hideToolbar(hide: false)
- isDrawing = false
- }
-
- //MARK: Bottom Toolbar
-
- @IBAction func saveButtonTapped(_ sender: AnyObject) {
- UIImageWriteToSavedPhotosAlbum(canvasView.toImage(),self, #selector(PhotoEditorViewController.image(_:withPotentialError:contextInfo:)), nil)
- }
-
- @IBAction func shareButtonTapped(_ sender: UIButton) {
- let activity = UIActivityViewController(activityItems: [canvasView.toImage()], applicationActivities: nil)
- present(activity, animated: true, completion: nil)
-
- }
-
- @IBAction func clearButtonTapped(_ sender: AnyObject) {
- //clear drawing
- canvasImageView.image = nil
- //clear stickers and textviews
- for subview in canvasImageView.subviews {
- subview.removeFromSuperview()
- }
- }
-
- @IBAction func continueButtonPressed(_ sender: Any) {
- let img = self.canvasView.toImage()
- photoEditorDelegate?.doneEditing(image: img)
- self.dismiss(animated: true, completion: nil)
- }
- //MAKR: helper methods
-
- @objc func image(_ image: UIImage, withPotentialError error: NSErrorPointer, contextInfo: UnsafeRawPointer) {
- let alert = UIAlertController(title: "Image Saved", message: "Image successfully saved to Photos library", preferredStyle: UIAlertController.Style.alert)
- alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
- self.present(alert, animated: true, completion: nil)
- }
-
- func hideControls() {
- for control in hiddenControls {
- switch control {
-
- case .clear:
- clearButton.isHidden = true
- case .crop:
- cropButton.isHidden = true
- case .draw:
- drawButton.isHidden = true
- case .save:
- saveButton.isHidden = true
- case .share:
- shareButton.isHidden = true
- case .sticker:
- stickerButton.isHidden = true
- case .text:
- stickerButton.isHidden = true
- }
- }
- }
-
- }
|