mirror of
https://github.com/samsonjs/SwiftyCam.git
synced 2026-03-25 09:05:52 +00:00
Added optional delegate methods for running session and added enabled property to SwiftyCamButton
This commit is contained in:
parent
ad38933dca
commit
d837d4d71e
4 changed files with 106 additions and 31 deletions
|
|
@ -18,10 +18,9 @@ import UIKit
|
|||
|
||||
class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {
|
||||
|
||||
@IBOutlet weak var captureButton: SwiftyRecordButton!
|
||||
@IBOutlet weak var flipCameraButton: UIButton!
|
||||
@IBOutlet weak var flashButton: UIButton!
|
||||
|
||||
@IBOutlet weak var captureButton : SwiftyRecordButton!
|
||||
@IBOutlet weak var flipCameraButton : UIButton!
|
||||
@IBOutlet weak var flashButton : UIButton!
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
|
@ -31,6 +30,9 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {
|
|||
shouldUseDeviceOrientation = true
|
||||
allowAutoRotate = true
|
||||
audioEnabled = true
|
||||
|
||||
// disable capture button until session starts
|
||||
captureButton.buttonEnabled = false
|
||||
}
|
||||
|
||||
override var prefersStatusBarHidden: Bool {
|
||||
|
|
@ -41,6 +43,17 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {
|
|||
super.viewDidAppear(animated)
|
||||
captureButton.delegate = self
|
||||
}
|
||||
|
||||
func swiftyCamSessionDidStartRunning(_ swiftyCam: SwiftyCamViewController) {
|
||||
print("Session did start running")
|
||||
captureButton.buttonEnabled = true
|
||||
}
|
||||
|
||||
func swiftyCamSessionDidStopRunning(_ swiftyCam: SwiftyCamViewController) {
|
||||
print("Session did stop running")
|
||||
captureButton.buttonEnabled = false
|
||||
}
|
||||
|
||||
|
||||
func swiftyCam(_ swiftyCam: SwiftyCamViewController, didTake photo: UIImage) {
|
||||
let newVC = PhotoViewController(image: photo)
|
||||
|
|
@ -50,19 +63,13 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {
|
|||
func swiftyCam(_ swiftyCam: SwiftyCamViewController, didBeginRecordingVideo camera: SwiftyCamViewController.CameraSelection) {
|
||||
print("Did Begin Recording")
|
||||
captureButton.growButton()
|
||||
UIView.animate(withDuration: 0.25, animations: {
|
||||
self.flashButton.alpha = 0.0
|
||||
self.flipCameraButton.alpha = 0.0
|
||||
})
|
||||
hideButtons()
|
||||
}
|
||||
|
||||
func swiftyCam(_ swiftyCam: SwiftyCamViewController, didFinishRecordingVideo camera: SwiftyCamViewController.CameraSelection) {
|
||||
print("Did finish Recording")
|
||||
captureButton.shrinkButton()
|
||||
UIView.animate(withDuration: 0.25, animations: {
|
||||
self.flashButton.alpha = 1.0
|
||||
self.flipCameraButton.alpha = 1.0
|
||||
})
|
||||
showButtons()
|
||||
}
|
||||
|
||||
func swiftyCam(_ swiftyCam: SwiftyCamViewController, didFinishProcessVideoAt url: URL) {
|
||||
|
|
@ -71,22 +78,8 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {
|
|||
}
|
||||
|
||||
func swiftyCam(_ swiftyCam: SwiftyCamViewController, didFocusAtPoint point: CGPoint) {
|
||||
let focusView = UIImageView(image: #imageLiteral(resourceName: "focus"))
|
||||
focusView.center = point
|
||||
focusView.alpha = 0.0
|
||||
view.addSubview(focusView)
|
||||
|
||||
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseInOut, animations: {
|
||||
focusView.alpha = 1.0
|
||||
focusView.transform = CGAffineTransform(scaleX: 1.25, y: 1.25)
|
||||
}, completion: { (success) in
|
||||
UIView.animate(withDuration: 0.15, delay: 0.5, options: .curveEaseInOut, animations: {
|
||||
focusView.alpha = 0.0
|
||||
focusView.transform = CGAffineTransform(translationX: 0.6, y: 0.6)
|
||||
}, completion: { (success) in
|
||||
focusView.removeFromSuperview()
|
||||
})
|
||||
})
|
||||
print("Did focus at point: \(point)")
|
||||
focusAnimationAt(point)
|
||||
}
|
||||
|
||||
func swiftyCamDidFailToConfigure(_ swiftyCam: SwiftyCamViewController) {
|
||||
|
|
@ -103,7 +96,6 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {
|
|||
|
||||
func swiftyCam(_ swiftyCam: SwiftyCamViewController, didSwitchCameras camera: SwiftyCamViewController.CameraSelection) {
|
||||
print("Camera did change to \(camera.rawValue)")
|
||||
|
||||
print(camera)
|
||||
}
|
||||
|
||||
|
|
@ -117,7 +109,48 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {
|
|||
|
||||
@IBAction func toggleFlashTapped(_ sender: Any) {
|
||||
flashEnabled = !flashEnabled
|
||||
toggleFlashAnimation()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// UI Animations
|
||||
extension ViewController {
|
||||
|
||||
fileprivate func hideButtons() {
|
||||
UIView.animate(withDuration: 0.25) {
|
||||
self.flashButton.alpha = 0.0
|
||||
self.flipCameraButton.alpha = 0.0
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate func showButtons() {
|
||||
UIView.animate(withDuration: 0.25) {
|
||||
self.flashButton.alpha = 1.0
|
||||
self.flipCameraButton.alpha = 1.0
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate func focusAnimationAt(_ point: CGPoint) {
|
||||
let focusView = UIImageView(image: #imageLiteral(resourceName: "focus"))
|
||||
focusView.center = point
|
||||
focusView.alpha = 0.0
|
||||
view.addSubview(focusView)
|
||||
|
||||
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseInOut, animations: {
|
||||
focusView.alpha = 1.0
|
||||
focusView.transform = CGAffineTransform(scaleX: 1.25, y: 1.25)
|
||||
}) { (success) in
|
||||
UIView.animate(withDuration: 0.15, delay: 0.5, options: .curveEaseInOut, animations: {
|
||||
focusView.alpha = 0.0
|
||||
focusView.transform = CGAffineTransform(translationX: 0.6, y: 0.6)
|
||||
}) { (success) in
|
||||
focusView.removeFromSuperview()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate func toggleFlashAnimation() {
|
||||
if flashEnabled == true {
|
||||
flashButton.setImage(#imageLiteral(resourceName: "flash"), for: UIControlState())
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -54,6 +54,10 @@ open class SwiftyCamButton: UIButton {
|
|||
|
||||
public weak var delegate: SwiftyCamButtonDelegate?
|
||||
|
||||
// Sets whether button is enabled
|
||||
|
||||
public var buttonEnabled = true
|
||||
|
||||
/// Maximum duration variable
|
||||
|
||||
fileprivate var timer : Timer?
|
||||
|
|
@ -76,11 +80,19 @@ open class SwiftyCamButton: UIButton {
|
|||
/// UITapGestureRecognizer Function
|
||||
|
||||
@objc fileprivate func Tap() {
|
||||
guard buttonEnabled == true else {
|
||||
return
|
||||
}
|
||||
|
||||
delegate?.buttonWasTapped()
|
||||
}
|
||||
|
||||
/// UILongPressGestureRecognizer Function
|
||||
@objc fileprivate func LongPress(_ sender:UILongPressGestureRecognizer!) {
|
||||
guard buttonEnabled == true else {
|
||||
return
|
||||
}
|
||||
|
||||
switch sender.state {
|
||||
case .began:
|
||||
delegate?.buttonDidBeginLongPress()
|
||||
|
|
|
|||
|
|
@ -359,8 +359,6 @@ open class SwiftyCamViewController: UIViewController {
|
|||
NotificationCenter.default.addObserver(self, selector: #selector(captureSessionDidStopRunning), name: .AVCaptureSessionDidStopRunning, object: nil)
|
||||
}
|
||||
|
||||
|
||||
|
||||
// MARK: ViewDidAppear
|
||||
|
||||
/// ViewDidAppear(_ animated:) Implementation
|
||||
|
|
@ -1033,12 +1031,18 @@ open class SwiftyCamViewController: UIViewController {
|
|||
|
||||
@objc private func captureSessionDidStartRunning() {
|
||||
sessionRunning = true
|
||||
DispatchQueue.main.async {
|
||||
self.cameraDelegate?.swiftyCamSessionDidStartRunning(self)
|
||||
}
|
||||
}
|
||||
|
||||
/// Called when Notification Center registers session stops running
|
||||
|
||||
@objc private func captureSessionDidStopRunning() {
|
||||
sessionRunning = false
|
||||
DispatchQueue.main.async {
|
||||
self.cameraDelegate?.swiftyCamSessionDidStopRunning(self)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,24 @@ import AVFoundation
|
|||
|
||||
public protocol SwiftyCamViewControllerDelegate: class {
|
||||
|
||||
/**
|
||||
SwiftyCamViewControllerDelegate function called when when SwiftyCamViewController session did start running.
|
||||
Photos and video capture will be enabled.
|
||||
|
||||
- Parameter swiftyCam: Current SwiftyCamViewController
|
||||
*/
|
||||
|
||||
func swiftyCamSessionDidStartRunning(_ swiftyCam: SwiftyCamViewController)
|
||||
|
||||
/**
|
||||
SwiftyCamViewControllerDelegate function called when when SwiftyCamViewController session did stops running.
|
||||
Photos and video capture will be disabled.
|
||||
|
||||
- Parameter swiftyCam: Current SwiftyCamViewController
|
||||
*/
|
||||
|
||||
func swiftyCamSessionDidStopRunning(_ swiftyCam: SwiftyCamViewController)
|
||||
|
||||
/**
|
||||
SwiftyCamViewControllerDelegate function called when the takePhoto() function is called.
|
||||
|
||||
|
|
@ -116,6 +134,14 @@ public protocol SwiftyCamViewControllerDelegate: class {
|
|||
|
||||
public extension SwiftyCamViewControllerDelegate {
|
||||
|
||||
func swiftyCamSessionDidStopRunning(_ swiftyCam: SwiftyCamViewController) {
|
||||
// Optional
|
||||
}
|
||||
|
||||
func swiftyCamSessionDidStartRunning(_ swiftyCam: SwiftyCamViewController) {
|
||||
// Optional
|
||||
}
|
||||
|
||||
func swiftyCam(_ swiftyCam: SwiftyCamViewController, didTake photo: UIImage) {
|
||||
// Optional
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue